haml-i18n-extractor 0.0.10 → 0.0.12
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 +8 -8
 - data/TODO +19 -6
 - data/lib/haml-i18n-extractor/core-ext/hash.rb +6 -2
 - data/lib/haml-i18n-extractor/extractor.rb +7 -4
 - data/lib/haml-i18n-extractor/haml_writer.rb +3 -3
 - data/lib/haml-i18n-extractor/prompter.rb +45 -8
 - data/lib/haml-i18n-extractor/version.rb +1 -1
 - data/lib/haml-i18n-extractor/workflow.rb +11 -33
 - data/lib/haml-i18n-extractor/yaml_tool.rb +26 -15
 - data/test/extractor_test.rb +15 -1
 - data/test/prompter_test.rb +2 -2
 - data/test/test_helper.rb +0 -19
 - data/test/workflow_test.rb +20 -10
 - data/test/yaml_tool_test.rb +5 -14
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                ODdmOTAwNjUxNWQ5YTEzYWU1MWY5ZGJmYzUxZjAwNDQwNTQxMjFkYg==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                MzdjODNhMWY1NDc3ZTM3Y2FkOTMyMDMxZjhiMjFkNzJhZmMzZTFiMA==
         
     | 
| 
       7 
7 
     | 
    
         
             
            !binary "U0hBNTEy":
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                NTJjMDA1NjA3NGJhNDk1N2RlYjBkZmQ4OGZmNmY4NTVlMDMyNjNlYWJkNzVi
         
     | 
| 
      
 10 
     | 
    
         
            +
                ZGEyMTFjNzgwNzdmMmZmYTg2NWY2NmI4NGU4MmIxMWZkODkwZjUwZDU4NmUw
         
     | 
| 
      
 11 
     | 
    
         
            +
                YjNjMDNhZTNlZjBlZTIyMzkyMTBiM2JjNTc5MDgzMWFhNjQ2YTQ=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                ZTVjODAwMDM1ZTg2ZTEyNDI0Mjc2MmRiYmE5NTgxY2Q5YzEyODU0MmZlOGY1
         
     | 
| 
      
 14 
     | 
    
         
            +
                MmUxMTNiYjk4NzcyNjcwNzEyNzJmMGMwNTQyOTViMzFkOWFmYjdkM2Q3OGQx
         
     | 
| 
      
 15 
     | 
    
         
            +
                OTc5M2IxOTA0MmRiNmNhZWMzZTM5NzA4OTY3YWFlYzM4ZDJlM2I=
         
     | 
    
        data/TODO
    CHANGED
    
    | 
         @@ -12,10 +12,23 @@ 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            ## workflow todo's
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
      
 15 
     | 
    
         
            +
              make sure yaml keys are in one file
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              either way when yaml is written, it should just write itself to config/locales/en.yml
         
     | 
| 
      
 18 
     | 
    
         
            +
              wether its one-off, or project mode. and that's something yaml_tool should do.
         
     | 
| 
      
 19 
     | 
    
         
            +
              merge itself in.
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       20 
21 
     | 
    
         
             
              give user more context on line changes (like grep -C 4)
         
     | 
| 
       21 
     | 
    
         
            -
               
     | 
| 
      
 22 
     | 
    
         
            +
              agreegate yaml:
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            <ruby>
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              require 'yaml'
         
     | 
| 
      
 27 
     | 
    
         
            +
              require 'pp'
         
     | 
| 
      
 28 
     | 
    
         
            +
              ActiveSupport::HashWithIndifferentAccess = HashWithIndifferentAccess # hack when it writes out the yaml, it should not be with_indifferent_access
         
     | 
| 
      
 29 
     | 
    
         
            +
              all_yaml =  Dir.glob('*yml').collect{|x| File.read(x) }
         
     | 
| 
      
 30 
     | 
    
         
            +
              locale_hash = Hash.new
         
     | 
| 
      
 31 
     | 
    
         
            +
              all_yaml.map{|y| YAML.load(y) }.map{|x| locale_hash.deep_merge!(x)}
         
     | 
| 
      
 32 
     | 
    
         
            +
              pp locale_hash; "file.write it"
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            </ruby>
         
     | 
| 
         @@ -16,6 +16,8 @@ module Haml 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  attr_reader :haml_reader, :haml_writer
         
     | 
| 
       17 
17 
     | 
    
         
             
                  attr_reader :locale_hash, :yaml_tool, :type
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
                  DEFAULT_LINE_LOCALE_HASH = { :modified_line => nil,:keyname => nil,:replaced_text => nil, :path => nil }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       19 
21 
     | 
    
         
             
                  def initialize(haml_path, opts = {})
         
     | 
| 
       20 
22 
     | 
    
         
             
                    @type = opts[:type]
         
     | 
| 
       21 
23 
     | 
    
         
             
                    @prompt_per_line = opts[:prompt_per_line]
         
     | 
| 
         @@ -64,18 +66,19 @@ module Haml 
     | 
|
| 
       64 
66 
     | 
    
         
             
                    orig_line.chomp!
         
     | 
| 
       65 
67 
     | 
    
         
             
                    orig_line, whitespace = handle_line_whitespace(orig_line)
         
     | 
| 
       66 
68 
     | 
    
         
             
                    line_type, line_match = handle_line_finding(orig_line)
         
     | 
| 
       67 
     | 
    
         
            -
                    should_be_replaced, text_to_replace,  
     | 
| 
      
 69 
     | 
    
         
            +
                    should_be_replaced, text_to_replace, line_locale_hash = handle_line_replacing(orig_line, line_match, line_type, line_no)
         
     | 
| 
       68 
70 
     | 
    
         
             
                    if should_be_replaced
         
     | 
| 
       69 
71 
     | 
    
         
             
                      if prompt_per_line?
         
     | 
| 
       70 
     | 
    
         
            -
                        user_approves = Haml::I18n::Extractor::Prompter.new(orig_line,text_to_replace) 
     | 
| 
      
 72 
     | 
    
         
            +
                        user_approves = Haml::I18n::Extractor::Prompter.new.ask_user(orig_line,text_to_replace)
         
     | 
| 
       71 
73 
     | 
    
         
             
                      else
         
     | 
| 
       72 
74 
     | 
    
         
             
                        user_approves = true
         
     | 
| 
       73 
75 
     | 
    
         
             
                      end
         
     | 
| 
       74 
76 
     | 
    
         
             
                    end
         
     | 
| 
       75 
     | 
    
         
            -
                    append_to_locale_hash(line_no, locale_hash)
         
     | 
| 
       76 
77 
     | 
    
         
             
                    if user_approves
         
     | 
| 
      
 78 
     | 
    
         
            +
                      append_to_locale_hash(line_no, line_locale_hash)
         
     | 
| 
       77 
79 
     | 
    
         
             
                      add_to_body("#{whitespace}#{text_to_replace}")
         
     | 
| 
       78 
80 
     | 
    
         
             
                    else
         
     | 
| 
      
 81 
     | 
    
         
            +
                      append_to_locale_hash(line_no, DEFAULT_LINE_LOCALE_HASH)
         
     | 
| 
       79 
82 
     | 
    
         
             
                      add_to_body("#{whitespace}#{orig_line}")
         
     | 
| 
       80 
83 
     | 
    
         
             
                    end
         
     | 
| 
       81 
84 
     | 
    
         
             
                    return should_be_replaced
         
     | 
| 
         @@ -93,7 +96,7 @@ module Haml 
     | 
|
| 
       93 
96 
     | 
    
         
             
                      hash = replacer.replace_hash.dup.merge!({:path => @haml_reader.path })
         
     | 
| 
       94 
97 
     | 
    
         
             
                      [ true, hash[:modified_line], hash ]
         
     | 
| 
       95 
98 
     | 
    
         
             
                    else
         
     | 
| 
       96 
     | 
    
         
            -
                      hash =  
     | 
| 
      
 99 
     | 
    
         
            +
                      hash = DEFAULT_LINE_LOCALE_HASH
         
     | 
| 
       97 
100 
     | 
    
         
             
                      [ false, orig_line, hash ]
         
     | 
| 
       98 
101 
     | 
    
         
             
                    end
         
     | 
| 
       99 
102 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -7,13 +7,13 @@ module Haml 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                    def initialize(orig_path, options = {})
         
     | 
| 
       9 
9 
     | 
    
         
             
                      @type = options[:type] || :dump # safe default.
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       11 
11 
     | 
    
         
             
                      if overwrite?
         
     | 
| 
       12 
12 
     | 
    
         
             
                        @path = orig_path
         
     | 
| 
       13 
13 
     | 
    
         
             
                      elsif dump?
         
     | 
| 
       14 
14 
     | 
    
         
             
                        @path = orig_path.gsub(/.haml$/, ".i18n-extractor.haml")
         
     | 
| 
       15 
15 
     | 
    
         
             
                      end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       17 
17 
     | 
    
         
             
                    end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                    def write_file
         
     | 
| 
         @@ -33,4 +33,4 @@ module Haml 
     | 
|
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         
             
              end
         
     | 
| 
       36 
     | 
    
         
            -
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -8,19 +8,14 @@ module Haml 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                    include Helpers::Highline
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                    def  
     | 
| 
       12 
     | 
    
         
            -
                      @orig_line = orig_line
         
     | 
| 
       13 
     | 
    
         
            -
                      @replaced_line = replaced_line
         
     | 
| 
       14 
     | 
    
         
            -
                    end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                    def ask_user
         
     | 
| 
      
 11 
     | 
    
         
            +
                    def ask_user(orig_line, replaced_line)
         
     | 
| 
       17 
12 
     | 
    
         
             
                      say(highlight("Replace this line:"))
         
     | 
| 
       18 
13 
     | 
    
         
             
                      say("\n")
         
     | 
| 
       19 
     | 
    
         
            -
                      say( 
     | 
| 
      
 14 
     | 
    
         
            +
                      say(orig_line.inspect)
         
     | 
| 
       20 
15 
     | 
    
         
             
                      say("\n")
         
     | 
| 
       21 
16 
     | 
    
         
             
                      say(highlight("With this line?"))
         
     | 
| 
       22 
17 
     | 
    
         
             
                      say("\n")
         
     | 
| 
       23 
     | 
    
         
            -
                      say( 
     | 
| 
      
 18 
     | 
    
         
            +
                      say(replaced_line.inspect)
         
     | 
| 
       24 
19 
     | 
    
         
             
                      say("\n")
         
     | 
| 
       25 
20 
     | 
    
         
             
                      answer = ask(highlight('y/n?')) do |q|
         
     | 
| 
       26 
21 
     | 
    
         
             
                                 q.echo      = false
         
     | 
| 
         @@ -30,6 +25,48 @@ module Haml 
     | 
|
| 
       30 
25 
     | 
    
         
             
                      answer == 'y'
         
     | 
| 
       31 
26 
     | 
    
         
             
                    end
         
     | 
| 
       32 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                    def output_stats(file_count, file_names)
         
     | 
| 
      
 29 
     | 
    
         
            +
                      say(highlight("Wowza! Found #{file_count} haml files!\n\n", :red))
         
     | 
| 
      
 30 
     | 
    
         
            +
                      say("#{file_names}\n\n")
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    def process(haml_path, type)
         
     | 
| 
      
 34 
     | 
    
         
            +
                      say(highlight("#{type}-d file") + " #{haml_path}\n\n")
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    def end_message
         
     | 
| 
      
 38 
     | 
    
         
            +
                      say(highlight("\n\n\nNow run a git diff or such and see what changed!"))
         
     | 
| 
      
 39 
     | 
    
         
            +
                    end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    def not_processing(haml_path)
         
     | 
| 
      
 42 
     | 
    
         
            +
                      say(highlight("Not processing") + " file #{haml_path}.")
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    def syntax_error(haml_path)
         
     | 
| 
      
 46 
     | 
    
         
            +
                      say("Haml Syntax error fo #{haml_path}. Please inspect further.")
         
     | 
| 
      
 47 
     | 
    
         
            +
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    CHOICES = {O: :overwrite, D: :dump, N: :next}
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    def process_file?(file, file_index)
         
     | 
| 
      
 52 
     | 
    
         
            +
                      o = %{[#{highlight(:O)}]verwrite}
         
     | 
| 
      
 53 
     | 
    
         
            +
                      d = %{[#{highlight(:D)}]ump}
         
     | 
| 
      
 54 
     | 
    
         
            +
                      n = %{[#{highlight(:N)}]ext}
         
     | 
| 
      
 55 
     | 
    
         
            +
                      say("#{o} OR #{d} OR #{n}\n")
         
     | 
| 
      
 56 
     | 
    
         
            +
                      say("Choose the right option for")
         
     | 
| 
      
 57 
     | 
    
         
            +
                      say("#{highlight(file_index)} #{highlight(file)}")
         
     | 
| 
      
 58 
     | 
    
         
            +
                      choices = CHOICES.keys.map(&:to_s)
         
     | 
| 
      
 59 
     | 
    
         
            +
                      prompt = "Your choice #{highlight(choices)}?"
         
     | 
| 
      
 60 
     | 
    
         
            +
                      answer = ask(prompt) do |q|
         
     | 
| 
      
 61 
     | 
    
         
            +
                                 q.echo      = false
         
     | 
| 
      
 62 
     | 
    
         
            +
                                 q.character = true
         
     | 
| 
      
 63 
     | 
    
         
            +
                                 q.validate  = /\A[#{choices}r]\Z/
         
     | 
| 
      
 64 
     | 
    
         
            +
                               end
         
     | 
| 
      
 65 
     | 
    
         
            +
                      return :overwrite if answer == 'O'
         
     | 
| 
      
 66 
     | 
    
         
            +
                      return :overwrite if answer == 'R' # cheat 'replace'
         
     | 
| 
      
 67 
     | 
    
         
            +
                      return :dump if answer == 'D'
         
     | 
| 
      
 68 
     | 
    
         
            +
                    end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
       33 
70 
     | 
    
         
             
                  end
         
     | 
| 
       34 
71 
     | 
    
         
             
                end
         
     | 
| 
       35 
72 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,15 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'highline'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'highline/import'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
1 
     | 
    
         
             
            module Haml
         
     | 
| 
       5 
2 
     | 
    
         
             
              module I18n
         
     | 
| 
       6 
3 
     | 
    
         
             
                class Extractor
         
     | 
| 
       7 
4 
     | 
    
         
             
                  class Workflow
         
     | 
| 
       8 
5 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                    include Helpers::Highline
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
6 
     | 
    
         
             
                    def initialize(project_path)
         
     | 
| 
       12 
7 
     | 
    
         
             
                      @project_path = project_path
         
     | 
| 
      
 8 
     | 
    
         
            +
                      @prompter = Haml::I18n::Extractor::Prompter.new
         
     | 
| 
       13 
9 
     | 
    
         
             
                      unless File.directory?(@project_path)
         
     | 
| 
       14 
10 
     | 
    
         
             
                        raise Extractor::NotADirectory, "#{@project_path} needs to be a directory!"
         
     | 
| 
       15 
11 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -21,33 +17,15 @@ module Haml 
     | 
|
| 
       21 
17 
     | 
    
         
             
                      end
         
     | 
| 
       22 
18 
     | 
    
         
             
                    end
         
     | 
| 
       23 
19 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                    # FIXME, use prompter to do any prompting in this class TODO
         
     | 
| 
       26 
     | 
    
         
            -
                    #
         
     | 
| 
       27 
20 
     | 
    
         
             
                    def output_stats
         
     | 
| 
       28 
     | 
    
         
            -
                       
     | 
| 
       29 
     | 
    
         
            -
                       
     | 
| 
      
 21 
     | 
    
         
            +
                      file_count = files.size
         
     | 
| 
      
 22 
     | 
    
         
            +
                      file_names = files.join("\n")
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @prompter.output_stats(file_count, file_names)
         
     | 
| 
       30 
24 
     | 
    
         
             
                    end
         
     | 
| 
       31 
25 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                    CHOICES = {O: :overwrite, D: :dump, N: :next}
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
26 
     | 
    
         
             
                    def process_file?(file)
         
     | 
| 
       35 
     | 
    
         
            -
                       
     | 
| 
       36 
     | 
    
         
            -
                       
     | 
| 
       37 
     | 
    
         
            -
                      n = %{[#{highlight(:N)}]ext}
         
     | 
| 
       38 
     | 
    
         
            -
                      say("#{o} OR #{d} OR #{n}\n")
         
     | 
| 
       39 
     | 
    
         
            -
                      say("Choose the right option for")
         
     | 
| 
       40 
     | 
    
         
            -
                      say("#{index_for(file)} #{highlight(file)}")
         
     | 
| 
       41 
     | 
    
         
            -
                      choices = CHOICES.keys.map(&:to_s)
         
     | 
| 
       42 
     | 
    
         
            -
                      prompt = "Your choice #{highlight(choices)}?"
         
     | 
| 
       43 
     | 
    
         
            -
                      answer = ask(prompt) do |q|
         
     | 
| 
       44 
     | 
    
         
            -
                                 q.echo      = false
         
     | 
| 
       45 
     | 
    
         
            -
                                 q.character = true
         
     | 
| 
       46 
     | 
    
         
            -
                                 q.validate  = /\A[#{choices}r]\Z/
         
     | 
| 
       47 
     | 
    
         
            -
                               end
         
     | 
| 
       48 
     | 
    
         
            -
                      return :overwrite if answer == 'O'
         
     | 
| 
       49 
     | 
    
         
            -
                      return :overwrite if answer == 'R' # cheat 'replace'
         
     | 
| 
       50 
     | 
    
         
            -
                      return :dump if answer == 'D'
         
     | 
| 
      
 27 
     | 
    
         
            +
                      file_index = index_for(file)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      @prompter.process_file?(file, file_index)
         
     | 
| 
       51 
29 
     | 
    
         
             
                    end
         
     | 
| 
       52 
30 
     | 
    
         | 
| 
       53 
31 
     | 
    
         
             
                    def run
         
     | 
| 
         @@ -57,7 +35,7 @@ module Haml 
     | 
|
| 
       57 
35 
     | 
    
         
             
                        if type
         
     | 
| 
       58 
36 
     | 
    
         
             
                          process(haml_path, type)
         
     | 
| 
       59 
37 
     | 
    
         
             
                        else
         
     | 
| 
       60 
     | 
    
         
            -
                           
     | 
| 
      
 38 
     | 
    
         
            +
                          @prompter.not_processing(haml_path)
         
     | 
| 
       61 
39 
     | 
    
         
             
                        end
         
     | 
| 
       62 
40 
     | 
    
         
             
                      end
         
     | 
| 
       63 
41 
     | 
    
         
             
                    end_message
         
     | 
| 
         @@ -66,22 +44,22 @@ module Haml 
     | 
|
| 
       66 
44 
     | 
    
         
             
                    private
         
     | 
| 
       67 
45 
     | 
    
         | 
| 
       68 
46 
     | 
    
         
             
                    def end_message
         
     | 
| 
       69 
     | 
    
         
            -
                       
     | 
| 
      
 47 
     | 
    
         
            +
                      @prompter.end_message
         
     | 
| 
       70 
48 
     | 
    
         
             
                    end
         
     | 
| 
       71 
49 
     | 
    
         | 
| 
       72 
50 
     | 
    
         
             
                    def index_for(file)
         
     | 
| 
       73 
     | 
    
         
            -
                       
     | 
| 
      
 51 
     | 
    
         
            +
                      (files.index(file) + 1).to_s
         
     | 
| 
       74 
52 
     | 
    
         
             
                    end
         
     | 
| 
       75 
53 
     | 
    
         | 
| 
       76 
54 
     | 
    
         
             
                    def process(haml_path, type)
         
     | 
| 
       77 
     | 
    
         
            -
                       
     | 
| 
      
 55 
     | 
    
         
            +
                      @prompter.process(haml_path, type)
         
     | 
| 
       78 
56 
     | 
    
         
             
                      options = {:type => type} # overwrite or dump haml
         
     | 
| 
       79 
57 
     | 
    
         
             
                      options.merge!({:prompt_per_line => true}) # per-line prompts
         
     | 
| 
       80 
58 
     | 
    
         
             
                      begin
         
     | 
| 
       81 
59 
     | 
    
         
             
                        @ex1 = Haml::I18n::Extractor.new(haml_path, options)
         
     | 
| 
       82 
60 
     | 
    
         
             
                        @ex1.run
         
     | 
| 
       83 
61 
     | 
    
         
             
                      rescue Haml::I18n::Extractor::InvalidSyntax
         
     | 
| 
       84 
     | 
    
         
            -
                         
     | 
| 
      
 62 
     | 
    
         
            +
                        @prompter.syntax_error(haml_path)
         
     | 
| 
       85 
63 
     | 
    
         
             
                      end
         
     | 
| 
       86 
64 
     | 
    
         
             
                    end
         
     | 
| 
       87 
65 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -7,27 +7,26 @@ module Haml 
     | 
|
| 
       7 
7 
     | 
    
         
             
              module I18n
         
     | 
| 
       8 
8 
     | 
    
         
             
                class Extractor
         
     | 
| 
       9 
9 
     | 
    
         
             
                  class YamlTool
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       11 
11 
     | 
    
         
             
                    attr_accessor :locales_dir, :locale_hash
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                    def initialize(locales_dir = nil)
         
     | 
| 
       14 
14 
     | 
    
         
             
                      if locales_dir
         
     | 
| 
       15 
15 
     | 
    
         
             
                        @locales_dir = locales_dir
         
     | 
| 
       16 
16 
     | 
    
         
             
                      else
         
     | 
| 
       17 
     | 
    
         
            -
                         
     | 
| 
       18 
     | 
    
         
            -
                        @locales_dir = File.expand_path(".")
         
     | 
| 
      
 17 
     | 
    
         
            +
                        @locales_dir = File.expand_path("./config/locales/")
         
     | 
| 
       19 
18 
     | 
    
         
             
                      end
         
     | 
| 
       20 
19 
     | 
    
         
             
                    end
         
     | 
| 
       21 
20 
     | 
    
         | 
| 
       22 
21 
     | 
    
         
             
                    # {:en => {:view_name => {:key_name => :string_name } } }
         
     | 
| 
       23 
22 
     | 
    
         
             
                    def yaml_hash
         
     | 
| 
       24 
     | 
    
         
            -
                       
     | 
| 
      
 23 
     | 
    
         
            +
                      yml = HashWithIndifferentAccess.recursive_init
         
     | 
| 
       25 
24 
     | 
    
         
             
                      @locale_hash.map do |line_no, info|
         
     | 
| 
       26 
25 
     | 
    
         
             
                        unless info[:keyname].nil?
         
     | 
| 
       27 
     | 
    
         
            -
                           
     | 
| 
      
 26 
     | 
    
         
            +
                          yml[i18n_scope][standardized_viewname(info[:path])][standarized_keyname(info[:keyname])] = info[:replaced_text]
         
     | 
| 
       28 
27 
     | 
    
         
             
                        end
         
     | 
| 
       29 
28 
     | 
    
         
             
                      end
         
     | 
| 
       30 
     | 
    
         
            -
                       
     | 
| 
      
 29 
     | 
    
         
            +
                      yml = hashify(yml)
         
     | 
| 
       31 
30 
     | 
    
         
             
                    end
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
32 
     | 
    
         
             
                    def locale_file
         
     | 
| 
         @@ -36,19 +35,35 @@ module Haml 
     | 
|
| 
       36 
35 
     | 
    
         
             
                        if pth
         
     | 
| 
       37 
36 
     | 
    
         
             
                          full_path = Pathname.new(pth)
         
     | 
| 
       38 
37 
     | 
    
         
             
                          base_name = full_path.basename.to_s
         
     | 
| 
      
 38 
     | 
    
         
            +
                          if ! File.exist?(@locales_dir)
         
     | 
| 
      
 39 
     | 
    
         
            +
                            FileUtils.mkdir_p(@locales_dir)
         
     | 
| 
      
 40 
     | 
    
         
            +
                          end
         
     | 
| 
       39 
41 
     | 
    
         
             
                          File.expand_path(File.join( @locales_dir, standardized_viewname(full_path) + ".#{base_name}.yml"))
         
     | 
| 
       40 
42 
     | 
    
         
             
                        end
         
     | 
| 
       41 
     | 
    
         
            -
                      end. 
     | 
| 
      
 43 
     | 
    
         
            +
                      end || "haml-i18-extractor.yml"
         
     | 
| 
       42 
44 
     | 
    
         
             
                    end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       44 
46 
     | 
    
         
             
                    def write_file
         
     | 
| 
       45 
47 
     | 
    
         
             
                      f = File.open(locale_file, "w+")
         
     | 
| 
       46 
48 
     | 
    
         
             
                      f.puts yaml_hash.to_yaml
         
     | 
| 
       47 
49 
     | 
    
         
             
                      f.flush
         
     | 
| 
       48 
50 
     | 
    
         
             
                    end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       50 
52 
     | 
    
         
             
                    private
         
     | 
| 
       51 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
                    # {:foo => {:bar => {:baz => :mam}, :barrr => {:bazzz => :mammm} }}
         
     | 
| 
      
 55 
     | 
    
         
            +
                    def hashify(my_hash)
         
     | 
| 
      
 56 
     | 
    
         
            +
                      if my_hash.is_a?(HashWithIndifferentAccess)
         
     | 
| 
      
 57 
     | 
    
         
            +
                        result = {}
         
     | 
| 
      
 58 
     | 
    
         
            +
                        my_hash.each do |k, v|
         
     | 
| 
      
 59 
     | 
    
         
            +
                          result[k.to_s] = hashify(v)
         
     | 
| 
      
 60 
     | 
    
         
            +
                        end
         
     | 
| 
      
 61 
     | 
    
         
            +
                        result
         
     | 
| 
      
 62 
     | 
    
         
            +
                      else
         
     | 
| 
      
 63 
     | 
    
         
            +
                        my_hash
         
     | 
| 
      
 64 
     | 
    
         
            +
                      end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       52 
67 
     | 
    
         
             
                    def i18n_scope
         
     | 
| 
       53 
68 
     | 
    
         
             
                      :en
         
     | 
| 
       54 
69 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -64,11 +79,7 @@ module Haml 
     | 
|
| 
       64 
79 
     | 
    
         
             
                      Pathname.new(pth).dirname.to_s.split("/").last
         
     | 
| 
       65 
80 
     | 
    
         
             
                    end
         
     | 
| 
       66 
81 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                    #   defined?(Rails)
         
     | 
| 
       69 
     | 
    
         
            -
                    # end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                  end
         
     | 
| 
      
 82 
     | 
    
         
            +
                 end
         
     | 
| 
       72 
83 
     | 
    
         
             
                end
         
     | 
| 
       73 
84 
     | 
    
         
             
              end
         
     | 
| 
       74 
     | 
    
         
            -
            end
         
     | 
| 
      
 85 
     | 
    
         
            +
            end
         
     | 
    
        data/test/extractor_test.rb
    CHANGED
    
    | 
         @@ -25,7 +25,7 @@ module Haml 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  assert_equal h.prompt_per_line?, false
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                test "with a prompt_per_line option takes user input into consideration" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                test "with a prompt_per_line option takes user input into consideration for haml" do
         
     | 
| 
       29 
29 
     | 
    
         
             
                  h = Haml::I18n::Extractor.new(file_path("ex1.haml"), :prompt_per_line => true)
         
     | 
| 
       30 
30 
     | 
    
         
             
                  user_input = "D" # dump
         
     | 
| 
       31 
31 
     | 
    
         
             
                  File.readlines(file_path("ex1.haml")).size.times do
         
     | 
| 
         @@ -38,6 +38,19 @@ module Haml 
     | 
|
| 
       38 
38 
     | 
    
         
             
                  assert_equal File.read(h.haml_writer.path), File.read(file_path("ex1.haml"))
         
     | 
| 
       39 
39 
     | 
    
         
             
                end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
                test "with a prompt_per_line option takes user input into consideration for yaml" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  h = Haml::I18n::Extractor.new(file_path("ex1.haml"), :prompt_per_line => true)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  user_input = "D" # dump
         
     | 
| 
      
 44 
     | 
    
         
            +
                  File.readlines(file_path("ex1.haml")).size.times do
         
     | 
| 
      
 45 
     | 
    
         
            +
                    user_input << "n" # do not replace lines
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  with_highline(user_input) do
         
     | 
| 
      
 48 
     | 
    
         
            +
                    h.run
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  # no changes were made cause user was all like 'uhhh, no thxk'
         
     | 
| 
      
 51 
     | 
    
         
            +
                  assert_equal YAML.load(File.read(h.yaml_tool.locale_file)), {}
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       41 
54 
     | 
    
         
             
                test "can not initialize if the haml is not valid syntax" do
         
     | 
| 
       42 
55 
     | 
    
         
             
                  begin
         
     | 
| 
       43 
56 
     | 
    
         
             
                    Haml::I18n::Extractor.new(file_path("bad.haml"))
         
     | 
| 
         @@ -60,6 +73,7 @@ module Haml 
     | 
|
| 
       60 
73 
     | 
    
         
             
                end
         
     | 
| 
       61 
74 
     | 
    
         | 
| 
       62 
75 
     | 
    
         
             
                test "it writes the locale info to an out file when run" do
         
     | 
| 
      
 76 
     | 
    
         
            +
                  Dir.glob("*yml").map {|p| FileUtils.rm(p) } # HAX, TODO: handle with yaml files correctly (config/en.yml)
         
     | 
| 
       63 
77 
     | 
    
         
             
                  assert_equal File.exists?(@ex1.yaml_tool.locale_file), false
         
     | 
| 
       64 
78 
     | 
    
         
             
                  @ex1.run
         
     | 
| 
       65 
79 
     | 
    
         
             
                  assert_equal File.exists?(@ex1.yaml_tool.locale_file), true
         
     | 
    
        data/test/prompter_test.rb
    CHANGED
    
    | 
         @@ -5,13 +5,13 @@ module Haml 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                def test_asks_to_process_line_yes
         
     | 
| 
       7 
7 
     | 
    
         
             
                  with_highline("y") do
         
     | 
| 
       8 
     | 
    
         
            -
                    assert_equal Haml::I18n::Extractor::Prompter.new("orig", "replace") 
     | 
| 
      
 8 
     | 
    
         
            +
                    assert_equal Haml::I18n::Extractor::Prompter.new.ask_user("orig", "replace"), true
         
     | 
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                def test_asks_to_process_line_no
         
     | 
| 
       13 
13 
     | 
    
         
             
                  with_highline("n") do
         
     | 
| 
       14 
     | 
    
         
            -
                    assert_equal Haml::I18n::Extractor::Prompter.new("orig", "replace") 
     | 
| 
      
 14 
     | 
    
         
            +
                    assert_equal Haml::I18n::Extractor::Prompter.new.ask_user("orig", "replace"), false
         
     | 
| 
       15 
15 
     | 
    
         
             
                  end
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    | 
         @@ -89,25 +89,6 @@ ensure 
     | 
|
| 
       89 
89 
     | 
    
         
             
              $terminal = old_terminal
         
     | 
| 
       90 
90 
     | 
    
         
             
            end
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
            def without_rails_mode
         
     | 
| 
       95 
     | 
    
         
            -
              Object.send(:remove_const, :Rails) if defined?(Rails)
         
     | 
| 
       96 
     | 
    
         
            -
              yield
         
     | 
| 
       97 
     | 
    
         
            -
            end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
            def with_rails_mode
         
     | 
| 
       100 
     | 
    
         
            -
              create_klass=<<EOR
         
     | 
| 
       101 
     | 
    
         
            -
              module Rails
         
     | 
| 
       102 
     | 
    
         
            -
                def self.root
         
     | 
| 
       103 
     | 
    
         
            -
                  "/data/current/name"
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
              end
         
     | 
| 
       106 
     | 
    
         
            -
            EOR
         
     | 
| 
       107 
     | 
    
         
            -
              eval create_klass
         
     | 
| 
       108 
     | 
    
         
            -
              yield
         
     | 
| 
       109 
     | 
    
         
            -
            end
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
92 
     | 
    
         
             
            module TestHelper
         
     | 
| 
       112 
93 
     | 
    
         | 
| 
       113 
94 
     | 
    
         
             
              TMPDIR = File.join(File.dirname(__FILE__) +  "/tmp/")
         
     | 
    
        data/test/workflow_test.rb
    CHANGED
    
    | 
         @@ -12,6 +12,18 @@ module Haml 
     | 
|
| 
       12 
12 
     | 
    
         
             
                TestHelper.teardown_project_directory!
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
              def full_project_user_interaction
         
     | 
| 
      
 16 
     | 
    
         
            +
                automate_user_interaction = ""
         
     | 
| 
      
 17 
     | 
    
         
            +
                6.times do                            # should be number of files we're testing on
         
     | 
| 
      
 18 
     | 
    
         
            +
                  automate_user_interaction << "O"    # overwrite file
         
     | 
| 
      
 19 
     | 
    
         
            +
                  50.times do                         # should be number of lines in file,
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                      # this should do right now.
         
     | 
| 
      
 21 
     | 
    
         
            +
                    automate_user_interaction << "y"  # replace line
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
                automate_user_interaction
         
     | 
| 
      
 25 
     | 
    
         
            +
             end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       15 
27 
     | 
    
         
             
              def test_it_should_work_on_a_directory_mkay
         
     | 
| 
       16 
28 
     | 
    
         
             
                filename = "#{TestHelper::PROJECT_DIR}app/views/bar/thang.haml"
         
     | 
| 
       17 
29 
     | 
    
         
             
                bad_worfklow = Haml::I18n::Extractor::Workflow.new(filename)
         
     | 
| 
         @@ -19,7 +31,7 @@ module Haml 
     | 
|
| 
       19 
31 
     | 
    
         
             
                rescue Haml::I18n::Extractor::NotADirectory
         
     | 
| 
       20 
32 
     | 
    
         
             
                  assert true, "workflow works on a directory bubba."
         
     | 
| 
       21 
33 
     | 
    
         
             
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       23 
35 
     | 
    
         
             
              def test_it_finds_all_haml_files
         
     | 
| 
       24 
36 
     | 
    
         
             
                assert_equal @workflow.files.size, 4
         
     | 
| 
       25 
37 
     | 
    
         
             
              end
         
     | 
| 
         @@ -49,16 +61,14 @@ module Haml 
     | 
|
| 
       49 
61 
     | 
    
         
             
                end
         
     | 
| 
       50 
62 
     | 
    
         
             
              end
         
     | 
| 
       51 
63 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
              def  
     | 
| 
       53 
     | 
    
         
            -
                 
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                  automate_user_interaction << "O"    # overwrite file
         
     | 
| 
       56 
     | 
    
         
            -
                  50.times do                         # should be number of lines in file,
         
     | 
| 
       57 
     | 
    
         
            -
                                                      # this should do right now.
         
     | 
| 
       58 
     | 
    
         
            -
                    automate_user_interaction << "y"  # replace line
         
     | 
| 
       59 
     | 
    
         
            -
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
              def test_yaml_file_in_config
         
     | 
| 
      
 65 
     | 
    
         
            +
                with_highline(full_project_user_interaction) do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  @workflow.run
         
     | 
| 
       60 
67 
     | 
    
         
             
                end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              def test_run_works
         
     | 
| 
      
 71 
     | 
    
         
            +
                with_highline(full_project_user_interaction) do
         
     | 
| 
       62 
72 
     | 
    
         
             
                  @workflow.run
         
     | 
| 
       63 
73 
     | 
    
         
             
                end
         
     | 
| 
       64 
74 
     | 
    
         
             
              end
         
     | 
    
        data/test/yaml_tool_test.rb
    CHANGED
    
    | 
         @@ -28,25 +28,16 @@ module Haml 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    }
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                #     assert_equal yaml_tool.locales_dir, "/data/current/name/config/locales"
         
     | 
| 
       35 
     | 
    
         
            -
                #   end
         
     | 
| 
       36 
     | 
    
         
            -
                # end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                test "locale dir defaults to cwd if no rails" do
         
     | 
| 
       39 
     | 
    
         
            -
                  without_rails_mode do
         
     | 
| 
       40 
     | 
    
         
            -
                    yaml_tool = Haml::I18n::Extractor::YamlTool.new
         
     | 
| 
       41 
     | 
    
         
            -
                    assert_equal yaml_tool.locales_dir, File.expand_path(".")
         
     | 
| 
       42 
     | 
    
         
            -
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                test "locale dir defaults to config/locales/" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  yaml_tool = Haml::I18n::Extractor::YamlTool.new
         
     | 
| 
      
 33 
     | 
    
         
            +
                  assert_equal yaml_tool.locales_dir, File.expand_path("./config/locales")
         
     | 
| 
       43 
34 
     | 
    
         
             
                end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       45 
36 
     | 
    
         
             
                test "you can set the locale_dir" do
         
     | 
| 
       46 
37 
     | 
    
         
             
                  yaml_tool = Haml::I18n::Extractor::YamlTool.new(@temp_locale_dir)
         
     | 
| 
       47 
38 
     | 
    
         
             
                  assert_equal yaml_tool.locales_dir, @temp_locale_dir
         
     | 
| 
       48 
39 
     | 
    
         
             
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       50 
41 
     | 
    
         
             
                test "it relies on the locale_hash having a certain format" do
         
     | 
| 
       51 
42 
     | 
    
         
             
                  setup_locale_hash
         
     | 
| 
       52 
43 
     | 
    
         
             
                  @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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.12
         
     | 
| 
       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- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-05-14 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: tilt
         
     |