gettext 3.4.6 → 3.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/doc/text/news.md +44 -0
- data/lib/gettext/po_entry.rb +5 -4
- data/lib/gettext/po_parser.rb +33 -29
- data/lib/gettext/tools/task.rb +3 -5
- data/lib/gettext/version.rb +3 -3
- data/po/gettext.pot +3 -3
- data/src/po_parser.ry +29 -25
- data/test/test_po_entry.rb +14 -0
- data/test/test_po_parser.rb +34 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 935189b8e4a67d110df2c1e21b89bab5f70057772c31861d58c1d71935e4ace3
         | 
| 4 | 
            +
              data.tar.gz: ee204b53fee909a7a23921a814fc3046312fe8fc6f3f576b7b883a2920896d02
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a91c277a26e46db88ff1d67c85a2d0932a22cf0043d74cec373119dea8431614dfd35a2ddaef7ed18b557c07bdd27b60c3e8bf6fe79e7da80e42160f30883786
         | 
| 7 | 
            +
              data.tar.gz: 00cd6a8ba2be7a06b9b9c7d5d8cc6e5f92bfbe768a32237dfcb029a105cd1b6508db88fb8988027c639d7bc385f43246d79513d5d4cc912d5e632ecbb5014c28
         | 
    
        data/README.md
    CHANGED
    
    | @@ -244,11 +244,11 @@ n_(fruits, 3) | |
| 244 244 |  | 
| 245 245 | 
             
            ### Interpolating translations
         | 
| 246 246 |  | 
| 247 | 
            -
            This is not a feature of gettext but worth noting. You can interpolate translated strings  | 
| 247 | 
            +
            This is not a feature of gettext but worth noting. You can interpolate translated strings with the ruby String `%` operator.
         | 
| 248 248 |  | 
| 249 249 | 
             
            ```ruby
         | 
| 250 250 | 
             
            N_("active"); N_("inactive"); N_("paused") # possible value of status for parser to find.
         | 
| 251 | 
            -
            _("Your account is  | 
| 251 | 
            +
            _("Your account is %{account_state}.") % { account_state: _(status) }
         | 
| 252 252 | 
             
            ```
         | 
| 253 253 |  | 
| 254 254 |  | 
    
        data/doc/text/news.md
    CHANGED
    
    | @@ -1,5 +1,49 @@ | |
| 1 1 | 
             
            # News
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 3.4.8: 2023-10-22 {#version-3-4-8}
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ### Fixes
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              * doc: Fixed a wrong description for interpolation.
         | 
| 8 | 
            +
                * GH-102
         | 
| 9 | 
            +
                * Patch by Ilmari Karonen
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              * po: Fixed a parser bug that flags aren't parsed correctly. If a
         | 
| 12 | 
            +
                normal comment has "fuzzy", the entry is also treated as a fuzzy
         | 
| 13 | 
            +
                entry.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              * po: Fixed an output bug that flags aren't formatted correctly.
         | 
| 16 | 
            +
                * GH-105
         | 
| 17 | 
            +
                * Patch by Yoshikazu Nojima
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ### Thanks
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              * Ilmari Karonen
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              * Yoshikazu Nojima
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ## 3.4.7: 2023-08-17 {#version-3-4-7}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ### Fixes
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              * po: Fixed a parser bug that it may add a `fuzzy` flag to non-fuzzy
         | 
| 30 | 
            +
                entry with `ignore_fuzzy: true`.
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                Example PO:
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                ```po
         | 
| 35 | 
            +
                #, fuzzy
         | 
| 36 | 
            +
                #: file.rb:10
         | 
| 37 | 
            +
                msgid "hello"
         | 
| 38 | 
            +
                msgstr "bonjour"
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                msgid "non-fuzzy"
         | 
| 41 | 
            +
                msgstr "non-fuzzy string"
         | 
| 42 | 
            +
            	```
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                `hello` entry is ignored because `ignore_fuzzy` is `true`. The
         | 
| 45 | 
            +
                `fuzzy` flag in the `hello` entry is added to `non-fuzzy` entry.
         | 
| 46 | 
            +
             | 
| 3 47 | 
             
            ## 3.4.6: 2023-07-12 {#version-3-4-6}
         | 
| 4 48 |  | 
| 5 49 | 
             
            ### Fixes
         | 
    
        data/lib/gettext/po_entry.rb
    CHANGED
    
    | @@ -428,11 +428,12 @@ module GetText | |
| 428 428 | 
             
                  end
         | 
| 429 429 |  | 
| 430 430 | 
             
                  def format_flag_comment
         | 
| 431 | 
            -
                     | 
| 432 | 
            -
             | 
| 433 | 
            -
             | 
| 431 | 
            +
                    if @entry.flags.empty?
         | 
| 432 | 
            +
                      String.new
         | 
| 433 | 
            +
                    else
         | 
| 434 | 
            +
                      joined_flags = @entry.flags.join(", ")
         | 
| 435 | 
            +
                      format_comment(FLAG_MARK, joined_flags)
         | 
| 434 436 | 
             
                    end
         | 
| 435 | 
            -
                    formatted_flags
         | 
| 436 437 | 
             
                  end
         | 
| 437 438 |  | 
| 438 439 | 
             
                  def format_previous_comment
         | 
    
        data/lib/gettext/po_parser.rb
    CHANGED
    
    | @@ -19,7 +19,7 @@ require "gettext/po" | |
| 19 19 | 
             
            module GetText
         | 
| 20 20 | 
             
              class POParser < Racc::Parser
         | 
| 21 21 |  | 
| 22 | 
            -
            module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry',  | 
| 22 | 
            +
            module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 126)
         | 
| 23 23 | 
             
              if GetText.respond_to?(:bindtextdomain)
         | 
| 24 24 | 
             
                include GetText
         | 
| 25 25 | 
             
                GetText.bindtextdomain("gettext")
         | 
| @@ -62,16 +62,8 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 122) | |
| 62 62 | 
             
              private :unescape
         | 
| 63 63 |  | 
| 64 64 | 
             
              def parse(str, data)
         | 
| 65 | 
            -
                 | 
| 66 | 
            -
                @extracted_comments = []
         | 
| 67 | 
            -
                @references = []
         | 
| 68 | 
            -
                @flags = []
         | 
| 69 | 
            -
                @previous = []
         | 
| 70 | 
            -
                @comments = []
         | 
| 65 | 
            +
                clear
         | 
| 71 66 | 
             
                @data = data
         | 
| 72 | 
            -
                @fuzzy = false
         | 
| 73 | 
            -
                @msgctxt = nil
         | 
| 74 | 
            -
                @msgid_plural = nil
         | 
| 75 67 |  | 
| 76 68 | 
             
                str = str.strip
         | 
| 77 69 | 
             
                @q = []
         | 
| @@ -157,15 +149,7 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 122) | |
| 157 149 | 
             
                  @data.set_comment(msgid, format_comment(@comments))
         | 
| 158 150 | 
             
                end
         | 
| 159 151 |  | 
| 160 | 
            -
                 | 
| 161 | 
            -
                @extracted_comments = []
         | 
| 162 | 
            -
                @references = []
         | 
| 163 | 
            -
                @flags = []
         | 
| 164 | 
            -
                @previous = []
         | 
| 165 | 
            -
                @references = []
         | 
| 166 | 
            -
                @comments.clear
         | 
| 167 | 
            -
                @msgctxt = nil
         | 
| 168 | 
            -
                @msgid_plural = nil
         | 
| 152 | 
            +
                clear
         | 
| 169 153 | 
             
              end
         | 
| 170 154 |  | 
| 171 155 | 
             
              def format_comment(comments)
         | 
| @@ -177,7 +161,11 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 122) | |
| 177 161 | 
             
              end
         | 
| 178 162 |  | 
| 179 163 | 
             
              def on_comment(comment)
         | 
| 180 | 
            -
                 | 
| 164 | 
            +
                if comment.start_with?(POFormat::FLAG_MARK)
         | 
| 165 | 
            +
                  content = comment[POFormat::FLAG_MARK.size..-1]
         | 
| 166 | 
            +
                  flags = parse_flags_line(content)
         | 
| 167 | 
            +
                  @fuzzy = true if flags.include?("fuzzy")
         | 
| 168 | 
            +
                end
         | 
| 181 169 | 
             
                if @data.instance_of?(PO)
         | 
| 182 170 | 
             
                  if comment == "#"
         | 
| 183 171 | 
             
                    @translator_comments << ""
         | 
| @@ -192,7 +180,7 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 122) | |
| 192 180 | 
             
                    when POFormat::REFERENCE_COMMENT_MARK
         | 
| 193 181 | 
             
                      @references.concat(parse_references_line(content))
         | 
| 194 182 | 
             
                    when POFormat::FLAG_MARK
         | 
| 195 | 
            -
                      @flags.concat( | 
| 183 | 
            +
                      @flags.concat(flags)
         | 
| 196 184 | 
             
                    when POFormat::PREVIOUS_COMMENT_MARK
         | 
| 197 185 | 
             
                      @previous << content
         | 
| 198 186 | 
             
                    else
         | 
| @@ -261,7 +249,19 @@ module_eval(<<'...end po_parser.ry/module_eval...', 'po_parser.ry', 122) | |
| 261 249 | 
             
              end
         | 
| 262 250 |  | 
| 263 251 | 
             
              def parse_flags_line(line)
         | 
| 264 | 
            -
                line.split( | 
| 252 | 
            +
                line.split(",").collect(&:strip)
         | 
| 253 | 
            +
              end
         | 
| 254 | 
            +
             | 
| 255 | 
            +
              def clear
         | 
| 256 | 
            +
                @translator_comments = []
         | 
| 257 | 
            +
                @extracted_comments = []
         | 
| 258 | 
            +
                @references = []
         | 
| 259 | 
            +
                @flags = []
         | 
| 260 | 
            +
                @previous = []
         | 
| 261 | 
            +
                @references = []
         | 
| 262 | 
            +
                @comments = []
         | 
| 263 | 
            +
                @msgctxt = nil
         | 
| 264 | 
            +
                @msgid_plural = nil
         | 
| 265 265 | 
             
              end
         | 
| 266 266 | 
             
            ...end po_parser.ry/module_eval...
         | 
| 267 267 | 
             
            ##### State transition tables begin ###
         | 
| @@ -417,14 +417,18 @@ module_eval(<<'.,.,', 'po_parser.ry', 38) | |
| 417 417 | 
             
                  end
         | 
| 418 418 | 
             
                end
         | 
| 419 419 | 
             
                @fuzzy = false
         | 
| 420 | 
            -
                 | 
| 420 | 
            +
                if use_message_p
         | 
| 421 | 
            +
                  on_message(msgid, msgstr)
         | 
| 422 | 
            +
                else
         | 
| 423 | 
            +
                  clear
         | 
| 424 | 
            +
                end
         | 
| 421 425 | 
             
                result = ""
         | 
| 422 426 |  | 
| 423 427 | 
             
                result
         | 
| 424 428 | 
             
              end
         | 
| 425 429 | 
             
            .,.,
         | 
| 426 430 |  | 
| 427 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 431 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 64)
         | 
| 428 432 | 
             
              def _reduce_9(val, _values, result)
         | 
| 429 433 | 
             
                    if @fuzzy and ignore_fuzzy?
         | 
| 430 434 | 
             
                  if val[1] != ""
         | 
| @@ -446,7 +450,7 @@ module_eval(<<'.,.,', 'po_parser.ry', 60) | |
| 446 450 | 
             
              end
         | 
| 447 451 | 
             
            .,.,
         | 
| 448 452 |  | 
| 449 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 453 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 85)
         | 
| 450 454 | 
             
              def _reduce_10(val, _values, result)
         | 
| 451 455 | 
             
                    if val[0].size > 0
         | 
| 452 456 | 
             
                  result = val[0] + "\000" + val[1]
         | 
| @@ -460,7 +464,7 @@ module_eval(<<'.,.,', 'po_parser.ry', 81) | |
| 460 464 |  | 
| 461 465 | 
             
            # reduce 11 omitted
         | 
| 462 466 |  | 
| 463 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 467 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 97)
         | 
| 464 468 | 
             
              def _reduce_12(val, _values, result)
         | 
| 465 469 | 
             
                    result = val[2]
         | 
| 466 470 |  | 
| @@ -468,7 +472,7 @@ module_eval(<<'.,.,', 'po_parser.ry', 93) | |
| 468 472 | 
             
              end
         | 
| 469 473 | 
             
            .,.,
         | 
| 470 474 |  | 
| 471 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 475 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 104)
         | 
| 472 476 | 
             
              def _reduce_13(val, _values, result)
         | 
| 473 477 | 
             
                    on_comment(val[0])
         | 
| 474 478 |  | 
| @@ -476,7 +480,7 @@ module_eval(<<'.,.,', 'po_parser.ry', 100) | |
| 476 480 | 
             
              end
         | 
| 477 481 | 
             
            .,.,
         | 
| 478 482 |  | 
| 479 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 483 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 112)
         | 
| 480 484 | 
             
              def _reduce_14(val, _values, result)
         | 
| 481 485 | 
             
                    result = val.delete_if{|item| item == ""}.join
         | 
| 482 486 |  | 
| @@ -484,7 +488,7 @@ module_eval(<<'.,.,', 'po_parser.ry', 108) | |
| 484 488 | 
             
              end
         | 
| 485 489 | 
             
            .,.,
         | 
| 486 490 |  | 
| 487 | 
            -
            module_eval(<<'.,.,', 'po_parser.ry',  | 
| 491 | 
            +
            module_eval(<<'.,.,', 'po_parser.ry', 116)
         | 
| 488 492 | 
             
              def _reduce_15(val, _values, result)
         | 
| 489 493 | 
             
                    result = val[0]
         | 
| 490 494 |  | 
    
        data/lib/gettext/tools/task.rb
    CHANGED
    
    | @@ -1,6 +1,4 @@ | |
| 1 | 
            -
            #  | 
| 2 | 
            -
            #
         | 
| 3 | 
            -
            # Copyright (C) 2012-2014  Kouhei Sutou <kou@clear-code.com>
         | 
| 1 | 
            +
            # Copyright (C) 2012-2023  Sutou Kouhei <kou@clear-code.com>
         | 
| 4 2 | 
             
            #
         | 
| 5 3 | 
             
            # License: Ruby's or LGPL
         | 
| 6 4 | 
             
            #
         | 
| @@ -452,8 +450,8 @@ module GetText | |
| 452 450 | 
             
                        locale = args.locale || ENV["LOCALE"]
         | 
| 453 451 | 
             
                        if locale.nil?
         | 
| 454 452 | 
             
                          raise "specify locale name by " +
         | 
| 455 | 
            -
             | 
| 456 | 
            -
             | 
| 453 | 
            +
                                "rake '#{_task.name}[${LOCALE}]' or " +
         | 
| 454 | 
            +
                                "rake #{_task.name} LOCALE=${LOCALE}'"
         | 
| 457 455 | 
             
                        end
         | 
| 458 456 | 
             
                        define_edit_po_file_task(locale)
         | 
| 459 457 | 
             
                        define_po_file_task(locale)
         | 
    
        data/lib/gettext/version.rb
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            =begin
         | 
| 2 2 | 
             
              version - version information of gettext
         | 
| 3 3 |  | 
| 4 | 
            -
              Copyright (C) 2012-2023 | 
| 5 | 
            -
              Copyright (C) 2005-2009 | 
| 4 | 
            +
              Copyright (C) 2012-2023  Sutou Kouhei <kou@clear-code.com>
         | 
| 5 | 
            +
              Copyright (C) 2005-2009  Masao Mutoh
         | 
| 6 6 |  | 
| 7 7 | 
             
              You may redistribute it and/or modify it under the same
         | 
| 8 8 | 
             
              license terms as Ruby or LGPL.
         | 
| 9 9 | 
             
            =end
         | 
| 10 10 |  | 
| 11 11 | 
             
            module GetText
         | 
| 12 | 
            -
              VERSION = "3.4. | 
| 12 | 
            +
              VERSION = "3.4.8"
         | 
| 13 13 | 
             
            end
         | 
    
        data/po/gettext.pot
    CHANGED
    
    | @@ -6,10 +6,10 @@ | |
| 6 6 | 
             
            #, fuzzy
         | 
| 7 7 | 
             
            msgid ""
         | 
| 8 8 | 
             
            msgstr ""
         | 
| 9 | 
            -
            "Project-Id-Version: gettext 3.4. | 
| 9 | 
            +
            "Project-Id-Version: gettext 3.4.8\n"
         | 
| 10 10 | 
             
            "Report-Msgid-Bugs-To: \n"
         | 
| 11 | 
            -
            "POT-Creation-Date: 2023- | 
| 12 | 
            -
            "PO-Revision-Date: 2023- | 
| 11 | 
            +
            "POT-Creation-Date: 2023-10-22 06:20+0900\n"
         | 
| 12 | 
            +
            "PO-Revision-Date: 2023-10-22 06:20+0900\n"
         | 
| 13 13 | 
             
            "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
         | 
| 14 14 | 
             
            "Language-Team: LANGUAGE <LL@li.org>\n"
         | 
| 15 15 | 
             
            "Language: \n"
         | 
    
        data/src/po_parser.ry
    CHANGED
    
    | @@ -2,9 +2,9 @@ | |
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            #  po_parser.ry - ruby version of msgfmt
         | 
| 4 4 | 
             
            #
         | 
| 5 | 
            -
            #  Copyright (C) 2002-2008 | 
| 6 | 
            -
            #  Copyright (C) 2012- | 
| 7 | 
            -
            #  Copyright (C) 2012-2013 | 
| 5 | 
            +
            #  Copyright (C) 2002-2008  Masao Mutoh <mutomasa at gmail.com>
         | 
| 6 | 
            +
            #  Copyright (C) 2012-2023  Sutou Kouhei <kou@clear-code.com>
         | 
| 7 | 
            +
            #  Copyright (C) 2012-2013  Haruka Yoshihara <yoshihara@clear-code.com>
         | 
| 8 8 | 
             
            #
         | 
| 9 9 | 
             
            #  You may redistribute it and/or modify it under the same
         | 
| 10 10 | 
             
            #  license terms as Ruby or LGPL.
         | 
| @@ -51,7 +51,11 @@ class GetText::POParser | |
| 51 51 | 
             
                  end
         | 
| 52 52 | 
             
                end
         | 
| 53 53 | 
             
                @fuzzy = false
         | 
| 54 | 
            -
                 | 
| 54 | 
            +
                if use_message_p
         | 
| 55 | 
            +
                  on_message(msgid, msgstr)
         | 
| 56 | 
            +
                else
         | 
| 57 | 
            +
                  clear
         | 
| 58 | 
            +
                end
         | 
| 55 59 | 
             
                result = ""
         | 
| 56 60 | 
             
              }
         | 
| 57 61 |  | 
| @@ -161,16 +165,8 @@ require "gettext/po" | |
| 161 165 | 
             
              private :unescape
         | 
| 162 166 |  | 
| 163 167 | 
             
              def parse(str, data)
         | 
| 164 | 
            -
                 | 
| 165 | 
            -
                @extracted_comments = []
         | 
| 166 | 
            -
                @references = []
         | 
| 167 | 
            -
                @flags = []
         | 
| 168 | 
            -
                @previous = []
         | 
| 169 | 
            -
                @comments = []
         | 
| 168 | 
            +
                clear
         | 
| 170 169 | 
             
                @data = data
         | 
| 171 | 
            -
                @fuzzy = false
         | 
| 172 | 
            -
                @msgctxt = nil
         | 
| 173 | 
            -
                @msgid_plural = nil
         | 
| 174 170 |  | 
| 175 171 | 
             
                str = str.strip
         | 
| 176 172 | 
             
                @q = []
         | 
| @@ -256,15 +252,7 @@ require "gettext/po" | |
| 256 252 | 
             
                  @data.set_comment(msgid, format_comment(@comments))
         | 
| 257 253 | 
             
                end
         | 
| 258 254 |  | 
| 259 | 
            -
                 | 
| 260 | 
            -
                @extracted_comments = []
         | 
| 261 | 
            -
                @references = []
         | 
| 262 | 
            -
                @flags = []
         | 
| 263 | 
            -
                @previous = []
         | 
| 264 | 
            -
                @references = []
         | 
| 265 | 
            -
                @comments.clear
         | 
| 266 | 
            -
                @msgctxt = nil
         | 
| 267 | 
            -
                @msgid_plural = nil
         | 
| 255 | 
            +
                clear
         | 
| 268 256 | 
             
              end
         | 
| 269 257 |  | 
| 270 258 | 
             
              def format_comment(comments)
         | 
| @@ -276,7 +264,11 @@ require "gettext/po" | |
| 276 264 | 
             
              end
         | 
| 277 265 |  | 
| 278 266 | 
             
              def on_comment(comment)
         | 
| 279 | 
            -
                 | 
| 267 | 
            +
                if comment.start_with?(POFormat::FLAG_MARK)
         | 
| 268 | 
            +
                  content = comment[POFormat::FLAG_MARK.size..-1]
         | 
| 269 | 
            +
                  flags = parse_flags_line(content)
         | 
| 270 | 
            +
                  @fuzzy = flags.include?("fuzzy")
         | 
| 271 | 
            +
                end
         | 
| 280 272 | 
             
                if @data.instance_of?(PO)
         | 
| 281 273 | 
             
                  if comment == "#"
         | 
| 282 274 | 
             
                    @translator_comments << ""
         | 
| @@ -291,7 +283,7 @@ require "gettext/po" | |
| 291 283 | 
             
                    when POFormat::REFERENCE_COMMENT_MARK
         | 
| 292 284 | 
             
                      @references.concat(parse_references_line(content))
         | 
| 293 285 | 
             
                    when POFormat::FLAG_MARK
         | 
| 294 | 
            -
                      @flags.concat( | 
| 286 | 
            +
                      @flags.concat(flags)
         | 
| 295 287 | 
             
                    when POFormat::PREVIOUS_COMMENT_MARK
         | 
| 296 288 | 
             
                      @previous << content
         | 
| 297 289 | 
             
                    else
         | 
| @@ -360,7 +352,19 @@ require "gettext/po" | |
| 360 352 | 
             
              end
         | 
| 361 353 |  | 
| 362 354 | 
             
              def parse_flags_line(line)
         | 
| 363 | 
            -
                line.split( | 
| 355 | 
            +
                line.split(",").collect(&:strip)
         | 
| 356 | 
            +
              end
         | 
| 357 | 
            +
             | 
| 358 | 
            +
              def clear
         | 
| 359 | 
            +
                @translator_comments = []
         | 
| 360 | 
            +
                @extracted_comments = []
         | 
| 361 | 
            +
                @references = []
         | 
| 362 | 
            +
                @flags = []
         | 
| 363 | 
            +
                @previous = []
         | 
| 364 | 
            +
                @references = []
         | 
| 365 | 
            +
                @comments = []
         | 
| 366 | 
            +
                @msgctxt = nil
         | 
| 367 | 
            +
                @msgid_plural = nil
         | 
| 364 368 | 
             
              end
         | 
| 365 369 | 
             
            ---- footer
         | 
| 366 370 |  | 
    
        data/test/test_po_entry.rb
    CHANGED
    
    | @@ -344,6 +344,20 @@ EOP | |
| 344 344 | 
             
                  assert_equal(expected_po, entry.to_s)
         | 
| 345 345 | 
             
                end
         | 
| 346 346 |  | 
| 347 | 
            +
                def test_multiple_flags
         | 
| 348 | 
            +
                  entry = GetText::POEntry.new(:normal)
         | 
| 349 | 
            +
                  entry.msgid = "msgid"
         | 
| 350 | 
            +
                  entry.msgstr = "msgstr"
         | 
| 351 | 
            +
                  entry.flags = ["It's the flag.", "fuzzy"]
         | 
| 352 | 
            +
             | 
| 353 | 
            +
                  expected_po = <<-EOP
         | 
| 354 | 
            +
            #, It's the flag., fuzzy
         | 
| 355 | 
            +
            msgid "msgid"
         | 
| 356 | 
            +
            msgstr "msgstr"
         | 
| 357 | 
            +
            EOP
         | 
| 358 | 
            +
                  assert_equal(expected_po, entry.to_s)
         | 
| 359 | 
            +
                end
         | 
| 360 | 
            +
             | 
| 347 361 | 
             
                def test_previous
         | 
| 348 362 | 
             
                  entry = GetText::POEntry.new(:normal)
         | 
| 349 363 | 
             
                  entry.msgid = "msgid"
         | 
    
        data/test/test_po_parser.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            # Copyright (C) 2012- | 
| 1 | 
            +
            # Copyright (C) 2012-2023  Sutou Kouhei <kou@clear-code.com>
         | 
| 2 2 | 
             
            # Copyright (C) 2012  Haruka Yoshihara <yoshihara@clear-code.com>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # License: Ruby's or LGPL
         | 
| @@ -238,6 +238,39 @@ EOP | |
| 238 238 | 
             
                  assert_equal("fuzzy", entries["hello"].flag)
         | 
| 239 239 | 
             
                end
         | 
| 240 240 |  | 
| 241 | 
            +
                def test_fuzzy_ignore
         | 
| 242 | 
            +
                  po_file = create_po_file(<<-PO)
         | 
| 243 | 
            +
            #, fuzzy
         | 
| 244 | 
            +
            #: file.rb:10
         | 
| 245 | 
            +
            msgid "hello"
         | 
| 246 | 
            +
            msgstr "bonjour"
         | 
| 247 | 
            +
             | 
| 248 | 
            +
            #, c-format, fuzzy , no-sh-format
         | 
| 249 | 
            +
            #: file.rb:11
         | 
| 250 | 
            +
            msgid "world"
         | 
| 251 | 
            +
            msgstr "monde"
         | 
| 252 | 
            +
             | 
| 253 | 
            +
            # This is not fuzzy
         | 
| 254 | 
            +
            msgid "non-fuzzy"
         | 
| 255 | 
            +
            msgstr "non-fuzzy string"
         | 
| 256 | 
            +
            PO
         | 
| 257 | 
            +
                  entries = suppress_warning do
         | 
| 258 | 
            +
                    parse_po_file(po_file)
         | 
| 259 | 
            +
                  end
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                  actual = entries.collect do |entry|
         | 
| 262 | 
            +
                    [
         | 
| 263 | 
            +
                      entry.msgid,
         | 
| 264 | 
            +
                      entry.msgstr,
         | 
| 265 | 
            +
                      entry.flags,
         | 
| 266 | 
            +
                    ]
         | 
| 267 | 
            +
                  end
         | 
| 268 | 
            +
                  assert_equal([
         | 
| 269 | 
            +
                                 ["non-fuzzy", "non-fuzzy string", []],
         | 
| 270 | 
            +
                               ],
         | 
| 271 | 
            +
                               actual)
         | 
| 272 | 
            +
                end
         | 
| 273 | 
            +
             | 
| 241 274 | 
             
                private
         | 
| 242 275 | 
             
                def parse_po_file(po_file, options={:ignore_fuzzy => true})
         | 
| 243 276 | 
             
                  ignore_fuzzy = options[:ignore_fuzzy]
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gettext
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.4. | 
| 4 | 
            +
              version: 3.4.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kouhei Sutou
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2023- | 
| 12 | 
            +
            date: 2023-10-21 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: erubi
         |