haml-i18n-extractor 0.0.12 → 0.0.15

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODdmOTAwNjUxNWQ5YTEzYWU1MWY5ZGJmYzUxZjAwNDQwNTQxMjFkYg==
4
+ NTY3NzcyNDcwZjBhZDJkMGJmMGI1OGViMGQzZmQ1ZWQ3MTQzNjViYQ==
5
5
  data.tar.gz: !binary |-
6
- MzdjODNhMWY1NDc3ZTM3Y2FkOTMyMDMxZjhiMjFkNzJhZmMzZTFiMA==
6
+ MjcwNjMxZDg2ZWE3NTI3NjI3NDUyYWY1MDFjOGE3YjIyZDVmMTU1ZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTJjMDA1NjA3NGJhNDk1N2RlYjBkZmQ4OGZmNmY4NTVlMDMyNjNlYWJkNzVi
10
- ZGEyMTFjNzgwNzdmMmZmYTg2NWY2NmI4NGU4MmIxMWZkODkwZjUwZDU4NmUw
11
- YjNjMDNhZTNlZjBlZTIyMzkyMTBiM2JjNTc5MDgzMWFhNjQ2YTQ=
9
+ NjQwYThlMzcxMzdhNGNjNTdlNmE1YmM5MDI3N2YwNGYxZjU1NWRjZDVjZWVj
10
+ ZTk2YmJmMjlkYzE1NGI5MGQ0YTVkNGJlZTE3MmE4OTllY2VkN2E4ZjVjY2U4
11
+ NDBjYzc1ZmM5NzFjMTE1MTFhNTBlMGE3Y2MyZTU4YmJlMTRiZTY=
12
12
  data.tar.gz: !binary |-
13
- ZTVjODAwMDM1ZTg2ZTEyNDI0Mjc2MmRiYmE5NTgxY2Q5YzEyODU0MmZlOGY1
14
- MmUxMTNiYjk4NzcyNjcwNzEyNzJmMGMwNTQyOTViMzFkOWFmYjdkM2Q3OGQx
15
- OTc5M2IxOTA0MmRiNmNhZWMzZTM5NzA4OTY3YWFlYzM4ZDJlM2I=
13
+ MmE2YWJjODY5MTA5OGU4MjZiODI4NWJiMDNhZmMxMDRhZDNkNDg5N2Y4MDRm
14
+ NzU0ZDNmZjYwYTU1NzgzOGRjMmIzYjE4NzkwYzkxMGJlMmQ2ZWM3MWUzYThm
15
+ ODQ3Y2EzNTZkZmE0NDMxNmMzZTExZmRkMWI5ZDhiY2ViZjQ1MmE=
data/TODO CHANGED
@@ -10,6 +10,8 @@
10
10
  - add herbgobbler (ERB) and this to another more generalized repo for translating templates?
11
11
  - Refactor tests: split out what is integration vs unit, too much coupling.
12
12
 
13
+ - Make dependencies for gem install haml-i18n-extractor work (highline and haml do not install with it?)
14
+
13
15
  ## workflow todo's
14
16
 
15
17
  make sure yaml keys are in one file
@@ -17,6 +19,7 @@
17
19
  either way when yaml is written, it should just write itself to config/locales/en.yml
18
20
  wether its one-off, or project mode. and that's something yaml_tool should do.
19
21
  merge itself in.
22
+ concept of project directory of whereever we expect that to be?
20
23
 
21
24
  give user more context on line changes (like grep -C 4)
22
25
  agreegate yaml:
@@ -19,12 +19,12 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency "tilt"
21
21
  gem.add_dependency "haml"
22
+ gem.add_dependency "activesupport"
23
+ gem.add_dependency "highline"
22
24
 
23
- gem.add_development_dependency 'rails', '>= 3.0.0'
24
25
  gem.add_development_dependency 'rbench'
25
26
  gem.add_development_dependency 'pry'
26
27
  gem.add_development_dependency 'minitest'
27
28
  gem.add_development_dependency 'nokogiri'
28
- gem.add_development_dependency 'highline'
29
29
 
30
30
  end
@@ -10,3 +10,5 @@ class Hash
10
10
  end
11
11
  end
12
12
  end
13
+
14
+ require 'active_support/core_ext/hash/deep_merge'
@@ -1,7 +1,7 @@
1
1
  module Haml
2
2
  module I18n
3
3
  class Extractor
4
- VERSION = "0.0.12"
4
+ VERSION = "0.0.15"
5
5
  end
6
6
  end
7
7
  end
@@ -10,11 +10,13 @@ module Haml
10
10
 
11
11
  attr_accessor :locales_dir, :locale_hash
12
12
 
13
+ # this requires passing an absolute path.
14
+ # meaning run from a given rails root...
15
+ # ok? change?
13
16
  def initialize(locales_dir = nil)
14
- if locales_dir
15
- @locales_dir = locales_dir
16
- else
17
- @locales_dir = File.expand_path("./config/locales/")
17
+ @locales_dir = locales_dir ? locales_dir : "./config/locales/"
18
+ if ! File.exists?(@locales_dir)
19
+ FileUtils.mkdir_p(@locales_dir)
18
20
  end
19
21
  end
20
22
 
@@ -30,22 +32,24 @@ module Haml
30
32
  end
31
33
 
32
34
  def locale_file
33
- if @locale_hash
34
- pth = @locale_hash.map{|_,h| h[:path] }.compact.first
35
- if pth
36
- full_path = Pathname.new(pth)
37
- base_name = full_path.basename.to_s
38
- if ! File.exist?(@locales_dir)
39
- FileUtils.mkdir_p(@locales_dir)
40
- end
41
- File.expand_path(File.join( @locales_dir, standardized_viewname(full_path) + ".#{base_name}.yml"))
42
- end
43
- end || "haml-i18-extractor.yml"
35
+ File.join(@locales_dir, "#{i18n_scope}.yml")
44
36
  end
45
37
 
46
- def write_file
47
- f = File.open(locale_file, "w+")
48
- f.puts yaml_hash.to_yaml
38
+ def write_file(filename = nil)
39
+ pth = filename.nil? ? locale_file : filename
40
+ if File.exist?(pth)
41
+ str = File.read(pth)
42
+ if str.empty?
43
+ existing_yaml_hash = {}
44
+ else
45
+ existing_yaml_hash = YAML.load(str)
46
+ end
47
+ else
48
+ existing_yaml_hash = {}
49
+ end
50
+ final_yaml_hash = existing_yaml_hash.deep_merge!(yaml_hash)
51
+ f = File.open(pth, "w+")
52
+ f.puts final_yaml_hash.to_yaml
49
53
  f.flush
50
54
  end
51
55
 
@@ -54,7 +58,7 @@ module Haml
54
58
  # {:foo => {:bar => {:baz => :mam}, :barrr => {:bazzz => :mammm} }}
55
59
  def hashify(my_hash)
56
60
  if my_hash.is_a?(HashWithIndifferentAccess)
57
- result = {}
61
+ result = Hash.new
58
62
  my_hash.each do |k, v|
59
63
  result[k.to_s] = hashify(v)
60
64
  end
@@ -39,6 +39,7 @@ module Haml
39
39
  end
40
40
 
41
41
  test "with a prompt_per_line option takes user input into consideration for yaml" do
42
+ hax_shit
42
43
  h = Haml::I18n::Extractor.new(file_path("ex1.haml"), :prompt_per_line => true)
43
44
  user_input = "D" # dump
44
45
  File.readlines(file_path("ex1.haml")).size.times do
@@ -72,8 +73,13 @@ module Haml
72
73
  assert_equal File.exists?(@ex1.haml_writer.path), true
73
74
  end
74
75
 
75
- test "it writes the locale info to an out file when run" do
76
+ def hax_shit
76
77
  Dir.glob("*yml").map {|p| FileUtils.rm(p) } # HAX, TODO: handle with yaml files correctly (config/en.yml)
78
+ Dir.glob("config/locales/*yml").map {|p| FileUtils.rm(p) } # HAX, TODO: handle with yaml files correctly (config/en.yml)
79
+ end
80
+
81
+ test "it writes the locale info to an out file when run" do
82
+ hax_shit
77
83
  assert_equal File.exists?(@ex1.yaml_tool.locale_file), false
78
84
  @ex1.run
79
85
  assert_equal File.exists?(@ex1.yaml_tool.locale_file), true
@@ -4,7 +4,7 @@ module Haml
4
4
  class YamlToolTest < MiniTest::Unit::TestCase
5
5
 
6
6
  def setup
7
- @temp_locale_dir = File.expand_path(__FILE__) + "/tmp/"
7
+ @temp_locale_dir = "./test/tmp/"
8
8
  end
9
9
 
10
10
  def setup_locale_hash
@@ -12,6 +12,33 @@ module Haml
12
12
  @ex1.run
13
13
  end
14
14
 
15
+ def locale_config_dir
16
+ dir = File.expand_path(File.join(File.dirname(__FILE__), "/tmp/config/locales"))
17
+ if ! File.exists?(dir)
18
+ FileUtils.mkdir_p(dir)
19
+ end
20
+ dir
21
+ end
22
+
23
+ def locale_config_file
24
+ File.join(locale_config_dir, "en.yml")
25
+ end
26
+
27
+ def setup_locale_file
28
+ File.open(locale_config_file, "w+") do |f|
29
+ f.write(existing_yaml_hash.to_yaml)
30
+ end
31
+ end
32
+
33
+ def existing_yaml_hash
34
+ {"en" => {
35
+ "viewname" => {
36
+ "translate_key" => "Translate Key"
37
+ }
38
+ }
39
+ }
40
+ end
41
+
15
42
  def ex1_yaml_hash
16
43
  {"en"=>
17
44
  {"support"=>
@@ -30,7 +57,7 @@ module Haml
30
57
 
31
58
  test "locale dir defaults to config/locales/" do
32
59
  yaml_tool = Haml::I18n::Extractor::YamlTool.new
33
- assert_equal yaml_tool.locales_dir, File.expand_path("./config/locales")
60
+ assert_equal yaml_tool.locales_dir, "./config/locales/"
34
61
  end
35
62
 
36
63
  test "you can set the locale_dir" do
@@ -38,6 +65,15 @@ module Haml
38
65
  assert_equal yaml_tool.locales_dir, @temp_locale_dir
39
66
  end
40
67
 
68
+ test "it can merge with an existing yml file" do
69
+ setup_locale_hash
70
+ setup_locale_file
71
+ @ex1.yaml_tool.write_file(locale_config_file)
72
+ really_written = YAML.load(File.read(locale_config_file))
73
+ assert_equal really_written['en']['viewname'], existing_yaml_hash['en']['viewname']
74
+ assert_equal really_written['en']['support'], ex1_yaml_hash['en']['support']
75
+ end
76
+
41
77
  test "it relies on the locale_hash having a certain format" do
42
78
  setup_locale_hash
43
79
  @ex1.yaml_tool.locale_hash.each do |line_no, info_for_line|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml-i18n-extractor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shai Rosenfeld
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-14 00:00:00.000000000 Z
11
+ date: 2013-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
@@ -39,27 +39,27 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rails
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.0
48
- type: :development
47
+ version: '0'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 3.0.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rbench
56
+ name: highline
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :development
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: pry
70
+ name: rbench
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ! '>='
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: minitest
84
+ name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ! '>='
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: nokogiri
98
+ name: minitest
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: highline
112
+ name: nokogiri
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ! '>='