haml-i18n-extractor 0.0.12 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ! '>='