chivy 0.0.1 → 0.0.2

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: 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