Jump to content

Talk:革命

Page contents not supported in other languages.
Add topic
From Wiktionary, the free dictionary
Latest comment: 7 years ago by Erutuon in topic Ruby failure

Ruby failure

[edit]

Ruby fails in one of the usage examples. It seems the kana for the word is missing. Strangely, the ruby works if the example is shortened:

  • failure: {{ja-usex|強%大な力に立ち向かう誓いを交わすために集%結した人%々。革%命の日は近い。|きょう%だい な に たちむかう ちかい を かわす ため に しゅう%けつ した ひと%びと。かく%めい の ひ は ちかい。|People are gathering to swear an oath to revolt against their oppressors. The revolution is drawing nigh.}}
  • (きょう)(だい)な力に()()かう(ちか)
    kyōdai na ni tachimukau chikai
    People are gathering to swear an oath to revolt against their oppressors. The revolution is drawing nigh.

Not sure what's going on there, but thought I'd note it for future reference. — Eru·tuon 08:54, 28 November 2017 (UTC)Reply

Test:
(きょう)(だい)(ランドムカナ)()()かう(ちか)いを()わすために(しゅう)(けつ)した(ひと)(びと)(かく)(めい)()(ちか)い。
Kyōdai na randomukana ni tachimukau chikai o kawasu tame ni shūketsu shita hitobito. Kakumei no hi wa chikai.
People are gathering to swear an oath to revolt against their oppressors. The revolution is drawing nigh.
Wyang (talk) 09:06, 28 November 2017 (UTC)Reply
@Wyang: The example just needs the pronunciation of 力 to be added. If I add random kana between な and に, the error disappears. — Eru·tuon 09:51, 28 November 2017 (UTC)Reply
Test:
(A) {{ja-usex|強%大な力に立ち向かう誓いを交わすために集%結した人%々。革%命の日は近い。|きょう%だい な に たちむかう ちかい を かわす ため に しゅう%けつ した ひと%びと。かく%めい の ひ は ちかい。|blah}}
(きょう)(だい)な力に()()かう(ちか)いを()わすために(しゅう)(けつ)した(ひと)(びと)(かく)(めい)()(ちか)い。
Kyōdai na ni tachimukau chikai o kawasu tame ni shūketsu shita hitobito. Kakumei no hi wa chikai.
blah
(B) {{ja-usex|強%大な力に立ち向かう誓い|きょう%だい な に たちむかう ちかい|blah}}
(きょう)(だい)な力に()()かう(ちか)
kyōdai na ni tachimukau chikai
blah
@Erutuon The code on line 654 of Module:ja uses two steps to extract the ruby for kanjis. (1) compare pattern and spaced kana; (2) compare pattern and unspaced kana. Only when both steps fail will it report an error. Applied to the two examples:
(A)
pattern: ^(..-)%%(..-)な(..-)に(..-)ち(..-)かう(..-)いを(..-)わすために(..-)%%(..-)した(..-)%%(..-)。(..-)%%(..-)の(..-)は(..-)い。$
spaced kana: きょう%だい な に たちむかう ちかい を かわす ため に しゅう%けつ した ひと%びと。かく%めい の ひは ちかい。
Thus step (1) fails (for a different reason - the different spacing patterns in parameters 1 and 2, not the lack of kana for 力).
unspaced kana: きょう%だいなにたちむかうちかいをかわすためにしゅう%けつしたひと%びと。かく%めいのひはちかい。
And step (2) fails because of the lack of kana for 力.
(B)
pattern: ^(..-)%%(..-)な(..-)に(..-)ち(..-)かう(..-)い$
spaced kana: きょう%だい な に たちむかう ちかい
Thus step (1) passes despite the lack of kana, since parameter 1 is unspaced and the spacing in parameter 2 is counted as kana. And indeed, giving parameter 1 the same spaces makes this case fail:
{{ja-usex|強%大 な 力 に 立ち向かう 誓い|きょう%だい な に たちむかう ちかい|blah}}
Lua error in Module:ja-ruby at line 628: Can not match "大 な 力 に 立ち向かう 誓い" and "だい な に たちむかう ちかい"
unspaced kana: きょう%だいなにたちむかうちかい
Step (2) fails as expected since there is no kana for 力.
It seems there are many ways of fixing this:
  1. Return an error if any of the captured 'rubies' contains only spaces after the check;
  2. Capture only Kanjikana-containing strings in the error check on line 654 (not sure if this could lead to side effects);
  3. Make parameter 1 of the template compulsorily spaced (this is the basis of the first step of this match-check function anyway).
Wyang (talk) 10:02, 28 November 2017 (UTC)Reply
Thanks for this analysis. It's very helpful. It is easy to determine if a capture contains only spaces; I've added code that checks for that, and the log entry can be changed to an error message. First the tracking category should be given a few days to fill up, and the existing cases be corrected, so that there aren't a bunch of module errors to be corrected all at once. Or maybe the function should be made to return nil, and Module:ja-usex and Module:ja-link should have fallback behavior in case ruby generation fails.
It would be possible to capture only kana (I corrected your message because the pattern operates on kana, not kanji). At the moment, the pattern-matching can even be done with the basic string functions. We would just have to replace "..-" with a kana pattern. It might have to contain characters besides kana, though.
Making the kana argument compulsively spaced would work, but it would require a lot of template input to be modified. — Eru·tuon 21:39, 28 November 2017 (UTC)Reply