chivy 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1603bd0a85a275283a45ce56b63e9bb845e2a26b
4
- data.tar.gz: 3e293b627cf02cddf8b271e59f518d6eb1ceeac9
3
+ metadata.gz: abff556fc83657742b15d3dfbcbd5ef90f94969b
4
+ data.tar.gz: 04d0f36a7fc79657ea3eae9b6f65b527240cc0aa
5
5
  SHA512:
6
- metadata.gz: cb0d8aa1ff2d7d738cfb5b20502384a2918395eccedc40e33aebd03b13fee696abd0f19586ce8c65f740234f9b823a366d2e99af98962aad5aa18a0c69a026b4
7
- data.tar.gz: 287d6a198e851d116d81cb04dd07d99e3514010031068dedae5066e46d99ad760d740a0fa48a6b21eb714aee9bf8cf9fabb21fd5444c2f2ef1e5cd842b53b4eb
6
+ metadata.gz: 693d12f17cf0c4fc32c84198bc181727c6535cd94e47a4f73cb727d7d0b2992aede898f0cda41854fa583a15fc6f0281babd1cbb1b5ae8bef4fe56978d1f91be
7
+ data.tar.gz: 3d3b7b9cac1b643c391fbc8d8a6f8bc05f43dc7c8ad609fe33bd22b2cf7382b3d4e91eeff117d8cb98c5ed50fc5589842aa79080fccac4693ce18f572935d223
data/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  Offers a quick way of analyzing language YAML-files and to add missing translation keys from the CLI.
4
4
 
5
- [![Gem Version](https://img.shields.io/gem/v/chivy.svg)](https://rubygems.org/gems/woro)
6
- [![Gem Downloads](https://img.shields.io/gem/dt/chivy.svg)](https://rubygems.org/gems/woro)
5
+ [![Gem Version](https://img.shields.io/gem/v/chivy.svg)](https://rubygems.org/gems/chivy)
6
+ [![Gem Downloads](https://img.shields.io/gem/dt/chivy.svg)](https://rubygems.org/gems/chivy)
7
7
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/dahie/chivy)
8
8
 
9
9
 
data/bin/chivy CHANGED
@@ -19,49 +19,19 @@ command :list do |c|
19
19
  c.action do |args, options|
20
20
 
21
21
  folder = args[1] || '.'
22
-
23
22
  files = Dir.entries(folder)
24
23
 
25
- # find base locales
26
- base_locales = {}
27
- base_names = {}
28
- files.each do |filename|
29
- if filename.match(/(\S*)\.(\S*)(.yml)/)
30
-
31
-
32
- tree = Chivy::Tree.new filename
33
- tree.load File.join(folder, filename)
34
-
35
- if base_locales.include? tree.locale
36
- base_locales[tree.locale] << tree.name
37
- else
38
- base_locales[tree.locale] = [tree.name]
39
- end
40
-
41
- if base_names.include? tree.name
42
- base_names[tree.name] << tree
43
- else
44
- base_names[tree.name] = [tree]
45
- end
46
- else
47
- # TODO error message
48
-
49
- end
50
- end
51
-
52
- processed_files = []
53
-
54
- base_names.each_key do |name|
55
- reference_tree = base_names[name].first
56
- base_names[name].each do |tree|
24
+ tree_manager = Chivy::TreeManager.load(folder, files)
25
+ tree_manager.each_base_name do |reference_tree|
26
+ tree_manager.each_base_name do |tree|
57
27
  next if tree.file == reference_tree.file
58
28
 
59
- puts "--- #{reference_tree.file} to #{tree.file}"
29
+ say "\n--- #{tree.file} to #{reference_tree.file}"
60
30
 
61
31
  diffs = HashDiff.diff(reference_tree.tree, tree.tree)
62
32
  diffs.each do |diff_set|
63
- if diff_set[0] == '-' || diff_set[0] == '+' || diff_set[2] == nil || diff_set[3] == nil
64
- puts "#{diff_set[0]} #{diff_set[1]}: #{diff_set[2]}"
33
+ if relevant_change?(diff_set)
34
+ say(color("#{diff_set[0]} #{diff_set[1]}: #{diff_set[2]}", change_color(diff_set[0])))
65
35
  end
66
36
  end
67
37
  end
@@ -69,3 +39,18 @@ command :list do |c|
69
39
  end
70
40
  end
71
41
  alias_command :ls, :list, :check
42
+
43
+ def relevant_change?(diff_set)
44
+ diff_set[0] == '-' || diff_set[0] == '+' || diff_set[2] == nil || diff_set[3] == nil
45
+ end
46
+
47
+ def change_color(change_type)
48
+ case change_type
49
+ when '-'
50
+ :red
51
+ when '+'
52
+ :green
53
+ else
54
+ :orange
55
+ end
56
+ end
@@ -1,4 +1,4 @@
1
1
  require 'chivy/version'
2
2
  require 'chivy/tree'
3
3
  require 'chivy/tree_diff'
4
- require 'chivy/key_list'
4
+ require 'chivy/tree_manager'
@@ -0,0 +1,65 @@
1
+ module Chivy
2
+ class TreeManager
3
+
4
+ TRANSLATION_YML_REGEX = /(\S*)\.(\S*)(.yml)/
5
+
6
+
7
+ attr_accessor :files, :folder, :loaded_files, :base_locales, :base_names
8
+
9
+
10
+ def initialize(folder, files)
11
+ @files = files
12
+ @folder = folder
13
+ @base_names = {}
14
+ @base_locales = {}
15
+ @loaded_files = []
16
+ end
17
+
18
+ # returns files successfully loaded
19
+ def self.load(folder, files)
20
+ tree_manager = TreeManager.new(folder, files)
21
+ tree_manager.fill
22
+ tree_manager
23
+ end
24
+
25
+ def each_base_name &block
26
+ base_names.each do |name, trees|
27
+ trees.each do |tree|
28
+ block.call(tree)
29
+ end
30
+ end
31
+ end
32
+
33
+
34
+ def fill
35
+ files.each do |filename|
36
+ if filename.match TRANSLATION_YML_REGEX
37
+ tree = Chivy::Tree.new filename
38
+ tree.load File.join(folder, filename)
39
+ loaded_files << filename
40
+ add_base_name(tree)
41
+ add_base_locale(tree)
42
+ end
43
+ end
44
+ end
45
+
46
+ protected
47
+
48
+
49
+ def add_base_name(tree)
50
+ if base_names.include? tree.name
51
+ base_names[tree.name] << tree
52
+ else
53
+ base_names[tree.name] = [tree]
54
+ end
55
+ end
56
+
57
+ def add_base_locale(tree)
58
+ if base_locales.include? tree.locale
59
+ base_locales[tree.locale] << tree.name
60
+ else
61
+ base_locales[tree.locale] = [tree.name]
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,4 +1,4 @@
1
1
  module Chivy
2
2
  # Look shiny!
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chivy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Senff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-16 00:00:00.000000000 Z
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -168,10 +168,10 @@ files:
168
168
  - chivy.gemspec
169
169
  - lib/chivy.rb
170
170
  - lib/chivy/configuration.rb
171
- - lib/chivy/key_list.rb
172
171
  - lib/chivy/task_helper.rb
173
172
  - lib/chivy/tree.rb
174
173
  - lib/chivy/tree_diff.rb
174
+ - lib/chivy/tree_manager.rb
175
175
  - lib/chivy/version.rb
176
176
  homepage: http://github.com/Dahie/chivy
177
177
  licenses:
@@ -1,82 +0,0 @@
1
- require 'ostruct'
2
- require 'commander'
3
- include Commander::UI
4
-
5
- module Chivy
6
- # Generates the list of all missing keys and prints out to the console.
7
- class KeyList
8
- attr_reader :config, :list
9
-
10
- def initialize(translations)
11
- @config = config
12
- @list = []
13
- end
14
-
15
- # Determine the max count of characters for all task names.
16
- # @return [integer] count of characters
17
- def width
18
- @width ||= list.map { |t| t.name_with_args ? t.name_with_args.length : 0 }.max || 10
19
- end
20
-
21
- # Fill task list by loading tasks from the configured adapters and locally.
22
- # @return [Object] task_list
23
- def fill
24
- fill_list_from_adapters
25
- fill_list_from_local
26
- self
27
- end
28
-
29
- # Print the current task list to console.
30
- def print
31
- list.each do |entry|
32
- entry.headline ? print_headline(entry) : print_task_description(entry)
33
- end
34
- end
35
-
36
- # Extract description from gist's data content string.
37
- # @param data [Hash] gist data hash
38
- # [String] description string
39
- def self.extract_description(task_content)
40
- # regex from http://stackoverflow.com/questions/171480/regex-grabbing-values-between-quotation-marks
41
- match = task_content.match(/desc (["'])((?:(?!\1)[^\\]|(?:\\\\)*\\[^\\])*)\1/)
42
- match && match[2] || 'No description'
43
- end
44
-
45
- protected
46
-
47
- def fill_list_from_local
48
- list << OpenStruct.new(headline: 'local')
49
- Woro::TaskHelper.woro_task_files(config.woro_task_dir) do |file_name, data|
50
- list << OpenStruct.new(name_with_args: file_name.split('.rake').first,
51
- comment: Woro::TaskList.extract_description(data))
52
- end
53
- end
54
-
55
- def fill_list_from_adapters
56
- adapter_settings.each do |adapter_setting|
57
- list << OpenStruct.new(headline: adapter_setting[0])
58
- adapter = config.adapter(adapter_setting[0])
59
- files = adapter.list_contents || {}
60
- files.map do |file_name, data|
61
- if file_name.include? '.rake'
62
- list << OpenStruct.new(name_with_args: file_name.split('.rake').first,
63
- comment: adapter.extract_description(data[:data]))
64
- end
65
- end
66
- list.compact!
67
- end
68
- end
69
-
70
- def adapter_settings
71
- config.adapter_settings
72
- end
73
-
74
- def print_headline(headline)
75
- say "#{headline.headline} ---"
76
- end
77
-
78
- def print_task_description(task)
79
- say " %-#{width}s # %s" % [task.name_with_args, task.comment]
80
- end
81
- end
82
- end