PoParser 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c506fa6a54bff012c86629ea79bfdd53c414a43a
4
- data.tar.gz: 44c9a383604e15653a4c9c196bf390c6d9f074b1
3
+ metadata.gz: 1a310a16fa33cd64c3cb41e3e0c62ffdc2605953
4
+ data.tar.gz: 30ecf8f919e4d28e530c7ba3fed2d1f145507ada
5
5
  SHA512:
6
- metadata.gz: fbea1d35226cf6ffa877c0ac9c62c92e80510ef39e31597e2e32c27936e8379768e8c5850845e5d5dca774e70d28de7949667d5f5268355e927bff993662f9b8
7
- data.tar.gz: 4b68497ef00ccf3c0f345dd00c10d35bd27b440ddf03846249291332e5ca9d077872e92bde26e536121abd0580f1b3fc56d8b357623263f4431c416ba61fea69
6
+ metadata.gz: f087afddd470840a6bcd7a7c7d8c538ca8cfc29aaca6eacef102b7573925d256833157211866b0ae96eab5e78556e33e7346071370a4810cf79ae4db19ef37c1
7
+ data.tar.gz: c9c277fe627b1543496387b3cf683ee24b206691daae7656da8235b6a054b12b32d3c144f30c107e85ef2602c8d7d5cf5bc84560805f2e947457e07b96301081
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Version 0.2.1
2
+
3
+ * Add search_in method.
4
+
1
5
  ## Version 0.2.0
2
6
 
3
7
  * Some entries in PO files are started with "#~", these entries are just kept by program for later use and are not counted as active entries. `PoParser` now supports them. We won't count them in stats or show them in Tanslated or Untranslated entries. They're just there.
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Build Status](https://travis-ci.org/arashm/PoParser.svg?branch=master)](https://travis-ci.org/arashm/PoParser)
4
4
  [![Coverage Status](https://img.shields.io/coveralls/arashm/PoParser.svg)](https://coveralls.io/r/arashm/PoParser)
5
5
  [![Code Climate](https://codeclimate.com/github/arashm/PoParser.png)](https://codeclimate.com/github/arashm/PoParser)
6
+ [![Gem Version](https://badge.fury.io/rb/PoParser.svg)](http://badge.fury.io/rb/PoParser)
6
7
 
7
8
  A Ruby PO file parser, editor and generator. PO files are translation files generated by GNU/Gettext tool. This GEM is compatible with [GNU PO file specification](https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html). report misbehaviours and bugs, to the [issue tracker](https://github.com/arashm/PoParser/issues).
8
9
 
@@ -36,7 +37,9 @@ The `parse` method returns a `PO` object which contains all `Entries`:
36
37
  # get all entries
37
38
  po.entries # or .all alias
38
39
 
39
- # include cashed entries (started with "#~", these entries are just kept by program for later use and are not counted as active entries)
40
+ # include cashed entries (started with "#~", these
41
+ # entries are just kept by program for later use and are
42
+ # not counted as active entries)
40
43
  po.entries(true)
41
44
 
42
45
  # get all fuzzy entries
@@ -132,7 +135,21 @@ entry.to_s(true)
132
135
 
133
136
  ### Searching
134
137
 
135
- `PO` is an `Enumerable`. All exciting methods from `Enumerable` are available in `PO`. the `PO` yields `Entry`.
138
+ `PO` is an `Enumerable`. All exciting methods from `Enumerable` are available in `PO`. The `PO` yields `Entry`.
139
+
140
+ ```ruby
141
+ po.find_all do |entry|
142
+ entry.msgid.str.match(/some text/i)
143
+ end
144
+ ```
145
+
146
+ There is a helper method that does the same:
147
+
148
+ ```ruby
149
+ po.search_in(:msgstr, 'some string to search')
150
+ ```
151
+
152
+ This method returns an array of matched entries.
136
153
 
137
154
  ### Saving
138
155
  You can simply save the PO file using the `PO` object:
data/lib/poparser/po.rb CHANGED
@@ -87,6 +87,22 @@ module PoParser
87
87
  end
88
88
  alias_method :length, :size
89
89
 
90
+ # Search for entries with provided string
91
+ #
92
+ # @param label [Symbol] One of the known LABELS
93
+ # @param string [String] String to search for
94
+ # @return [Array] Array of matched entries
95
+ def search_in(label, string)
96
+ if !LABELS.include? label.to_sym
97
+ raise ArgumentError, "Unknown key: #{label}"
98
+ end
99
+
100
+ find_all do |entry|
101
+ text = entry.send(label).str
102
+ text.match(/#{string}/i)
103
+ end
104
+ end
105
+
90
106
  # Shows statistics and status of the provided file in percentage.
91
107
  #
92
108
  # @return [Hash] a hash of translated, untranslated and fuzzy percentages
@@ -1,3 +1,3 @@
1
1
  module PoParser
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/poparser.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  # Runtime deps
22
- spec.add_runtime_dependency "parslet"
22
+ spec.add_runtime_dependency "parslet", "~> 1.6"
23
23
 
24
24
  # Development deps
25
25
  spec.add_development_dependency "bundler", "~> 1.5"
File without changes
@@ -52,4 +52,23 @@ describe PoParser::Po do
52
52
  @po << cached
53
53
  expect(@po.size).to eq(1)
54
54
  end
55
+
56
+ context 'search' do
57
+ before do
58
+ path = Pathname.new('spec/poparser/fixtures/test.po').realpath
59
+ @po = PoParser::Tokenizer.new.extract_entries(path)
60
+ end
61
+
62
+ it 'raises error if label is not valid' do
63
+ expect{
64
+ @po.search_in(:wrong, 'sth')
65
+ }.to raise_error(ArgumentError, 'Unknown key: wrong')
66
+ end
67
+
68
+ it 'searches in PO file' do
69
+ result = @po.search_in(:msgid, 'Invalid action')
70
+ expect(result.length).to eq(1)
71
+ expect(result[0].msgid.str).to eq('Invalid action. Someone probably posted another action just before you.')
72
+ end
73
+ end
55
74
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: PoParser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arash Mousavi
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: parslet
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -146,12 +146,12 @@ files:
146
146
  - spec/poparser/entry_spec.rb
147
147
  - spec/poparser/fixtures/multiline.po
148
148
  - spec/poparser/fixtures/plural.po
149
+ - spec/poparser/fixtures/test.po
149
150
  - spec/poparser/fixtures/tokenizer.po
150
151
  - spec/poparser/message_spec.rb
151
152
  - spec/poparser/parser_spec.rb
152
153
  - spec/poparser/po_spec.rb
153
154
  - spec/poparser/poparser_spec.rb
154
- - spec/poparser/test.po
155
155
  - spec/poparser/tokenizer_spec.rb
156
156
  - spec/poparser/transformer_spec.rb
157
157
  - spec/spec_helper.rb
@@ -184,13 +184,12 @@ test_files:
184
184
  - spec/poparser/entry_spec.rb
185
185
  - spec/poparser/fixtures/multiline.po
186
186
  - spec/poparser/fixtures/plural.po
187
+ - spec/poparser/fixtures/test.po
187
188
  - spec/poparser/fixtures/tokenizer.po
188
189
  - spec/poparser/message_spec.rb
189
190
  - spec/poparser/parser_spec.rb
190
191
  - spec/poparser/po_spec.rb
191
192
  - spec/poparser/poparser_spec.rb
192
- - spec/poparser/test.po
193
193
  - spec/poparser/tokenizer_spec.rb
194
194
  - spec/poparser/transformer_spec.rb
195
195
  - spec/spec_helper.rb
196
- has_rdoc: