mayl 0.2.0 → 0.2.1

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.
data/Rakefile CHANGED
@@ -14,5 +14,12 @@ Rake::TestTask.new do |t|
14
14
  t.test_files = FileList['./test/**/*_test.rb']
15
15
  end
16
16
 
17
+ require 'reek/rake/task'
18
+ Reek::Rake::Task.new do |t|
19
+ t.fail_on_error = true
20
+ t.verbose = false
21
+ t.source_files = 'lib/**/*.rb'
22
+ end
23
+
17
24
  task :doc => :yard
18
25
  task :default => :test
@@ -4,6 +4,7 @@ require "mayl/locale"
4
4
  require "mayl/loader"
5
5
  require "mayl/env"
6
6
  require "mayl/parser"
7
+ require "mayl/colors"
7
8
  require "mayl/repl"
8
9
 
9
10
  # Public: Mayl is an anagram of YAML, and also a console to create, edit and
@@ -0,0 +1,19 @@
1
+ module Mayl
2
+ module Colors
3
+ def color(name, str)
4
+ code = case name
5
+ when :black then "\033[30m"
6
+ when :red then "\033[31m"
7
+ when :green then "\033[32m"
8
+ when :brown then "\033[33m"
9
+ when :blue then "\033[34m"
10
+ when :magenta then "\033[35m"
11
+ when :cyan then "\033[36m"
12
+ when :gray then "\033[37m"
13
+ end
14
+ endcode = "\033[0m"
15
+
16
+ [code,str,endcode].join
17
+ end
18
+ end
19
+ end
@@ -22,9 +22,11 @@ module Mayl
22
22
  #
23
23
  # Returns nil.
24
24
  def execute
25
+ namespace = @env.namespace
26
+
25
27
  case @path
26
28
  when ".."
27
- ns = @env.namespace.split('.')
29
+ ns = namespace.split('.')
28
30
  ns.pop
29
31
  @env.namespace = ns.join('.')
30
32
  when "."
@@ -32,7 +34,7 @@ module Mayl
32
34
  else
33
35
  check_namespace!
34
36
 
35
- if @env.namespace.empty?
37
+ if namespace.empty?
36
38
  @env.namespace = @path
37
39
  else
38
40
  @env.namespace += '.' << @path
@@ -41,7 +43,11 @@ module Mayl
41
43
  nil
42
44
  end
43
45
 
44
- # Public: Checks that you're not trying to enter a leaf.
46
+ #######
47
+ private
48
+ #######
49
+
50
+ # Internal: Checks that you're not trying to enter a leaf.
45
51
  #
46
52
  # Raises an ArgumentError if you are.
47
53
  def check_namespace!
@@ -28,11 +28,13 @@ module Mayl
28
28
  #
29
29
  # Returns the key.
30
30
  def execute
31
+ key = qualified_key
31
32
  locale = locales.detect do |locale|
32
33
  locale.name.to_s == @locale.to_s
33
34
  end
34
- locale.set @key, @value
35
- @key
35
+
36
+ locale.set key, @value
37
+ key
36
38
  end
37
39
 
38
40
  #######
@@ -31,10 +31,11 @@ module Mayl
31
31
  def execute
32
32
  locales.each do |locale|
33
33
  result = locale.get qualified_key
34
+ name = locale.to_s
34
35
  if result.is_a? String
35
- print " #{locale.to_s}: #{result}\n"
36
+ print " #{name}: #{result}\n"
36
37
  else
37
- print " #{locale.to_s}: (empty)\n"
38
+ print " #{name}: (empty)\n"
38
39
  end
39
40
  end
40
41
  @key
@@ -4,6 +4,7 @@ module Mayl
4
4
  # Public: The class responsible for reading user input, interpreting it and
5
5
  # executing associated commands.
6
6
  class Repl
7
+ include Colors
7
8
  attr_reader :parser
8
9
 
9
10
  # Public: Initializes a new REPL from a given path.
@@ -21,13 +22,12 @@ module Mayl
21
22
  def start
22
23
  locales = @env.locales.map(&:name)
23
24
  stty_save = `stty -g`.chomp
24
- prompt = "> "
25
- puts "Detected locales: #{locales.join(', ')}"
25
+ prompt = color(:red, "> ")
26
+ puts color(:green, "Detected locales: #{locales.join(', ')}")
26
27
 
27
28
  env = @env
28
29
  Readline.completion_proc = proc { |s| Commands.autocomplete(s, env) }
29
30
  Readline.completion_append_character = ''
30
- # Readline.completer_word_break_characters = 23.chr
31
31
 
32
32
  begin
33
33
  while input = Readline.readline(prompt, true)
@@ -35,7 +35,7 @@ module Mayl
35
35
  value = @parser.parse(input.chomp).execute
36
36
  @env.last_value = value
37
37
  @env.commit
38
- prompt = [@env.namespace, '> '].reject(&:empty?).join ' '
38
+ prompt = color(:red, [@env.namespace, '> '].reject(&:empty?).join(' '))
39
39
  rescue => e
40
40
  print "Error: #{e.message}"
41
41
  ensure
@@ -1,4 +1,4 @@
1
1
  module Mayl
2
2
  # The version of the Mayl gem.
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
@@ -19,6 +19,8 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency 'yard-tomdoc'
20
20
  gem.add_development_dependency 'redcarpet'
21
21
 
22
+ gem.add_development_dependency 'reek'
23
+
22
24
  gem.add_development_dependency 'minitest'
23
25
  gem.add_development_dependency 'mocha'
24
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mayl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-19 00:00:00.000000000 Z
12
+ date: 2012-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: reek
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: minitest
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +124,7 @@ files:
108
124
  - Rakefile
109
125
  - bin/mayl
110
126
  - lib/mayl.rb
127
+ - lib/mayl/colors.rb
111
128
  - lib/mayl/commands.rb
112
129
  - lib/mayl/commands/cd.rb
113
130
  - lib/mayl/commands/edit.rb