Pickaxe 0.5.5 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +3 -0
- data/README.markdown +2 -2
- data/lib/pickaxe.rb +7 -3
- data/lib/pickaxe/cli.rb +14 -0
- data/lib/pickaxe/color.rb +3 -1
- data/lib/pickaxe/main.rb +6 -2
- data/lib/pickaxe/shell.rb +8 -2
- data/lib/pickaxe/test.rb +9 -5
- metadata +21 -5
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -5,8 +5,8 @@ Pickaxe provides a simple way to load, solve and rate tests
|
|
5
5
|
|
6
6
|
Documentation can be read [here](http://dejw.github.com/pickaxe/).
|
7
7
|
|
8
|
-
**Note:**
|
9
|
-
|
8
|
+
**Note:** if You are Windows user please read
|
9
|
+
[Windows section](http://dejw.github.com/pickaxe/#WINDOWS) in manual.
|
10
10
|
|
11
11
|
## instalation
|
12
12
|
|
data/lib/pickaxe.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "bundler/setup"
|
3
3
|
require "active_support/all"
|
4
|
+
require "rbconfig"
|
5
|
+
require "unidecoder"
|
4
6
|
|
5
7
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
|
6
8
|
|
7
9
|
module Pickaxe
|
8
|
-
VERSION = "0.
|
10
|
+
VERSION = "0.6.0"
|
9
11
|
|
10
12
|
class PickaxeError < StandardError; end
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
+
WINDOWS_IT_IS = Config::CONFIG['host_os'] =~ /mswin|mingw/
|
15
|
+
|
16
|
+
autoload :Shell, 'pickaxe/shell'
|
17
|
+
autoload :Color, 'pickaxe/color'
|
14
18
|
autoload :Main, 'pickaxe/main'
|
15
19
|
autoload :Test, 'pickaxe/test'
|
16
20
|
autoload :Errors, 'pickaxe/errors'
|
data/lib/pickaxe/cli.rb
CHANGED
@@ -60,6 +60,20 @@ end
|
|
60
60
|
|
61
61
|
begin
|
62
62
|
parser.parse!
|
63
|
+
|
64
|
+
Pickaxe::Main.options = options
|
65
|
+
|
66
|
+
if Pickaxe::WINDOWS_IT_IS
|
67
|
+
$stderr.puts <<END_OF_MESSAGE
|
68
|
+
! Hi there Windows user.
|
69
|
+
|
70
|
+
You will not be able to see colors, all diacritics
|
71
|
+
will be transliterated and dynamic console width
|
72
|
+
is not available. Sorry for the inconvenience.
|
73
|
+
END_OF_MESSAGE
|
74
|
+
|
75
|
+
end
|
76
|
+
|
63
77
|
if options[:full_test] and options[:repeat_incorrect]
|
64
78
|
$stderr.puts(("! --full-test disables the --repeat-incorrect option" ).color(:yellow))
|
65
79
|
options[:repeat_incorrect] = false
|
data/lib/pickaxe/color.rb
CHANGED
@@ -47,7 +47,9 @@ module Pickaxe
|
|
47
47
|
# of the returned String.
|
48
48
|
#
|
49
49
|
def self.set_color(string, color, bold=false)
|
50
|
-
|
50
|
+
if Pickaxe::WINDOWS_IT_IS
|
51
|
+
string
|
52
|
+
elsif not (Main.options || {})[:no_colors]
|
51
53
|
color = self.const_get(color.to_s.upcase) if color.is_a?(Symbol)
|
52
54
|
bold = bold ? BOLD : ""
|
53
55
|
"#{bold}#{color}#{string}#{CLEAR}"
|
data/lib/pickaxe/main.rb
CHANGED
@@ -16,7 +16,6 @@ END_OF_TEST
|
|
16
16
|
def initialize(paths, options = {})
|
17
17
|
raise NoTests, "no tests to run" if paths.empty?
|
18
18
|
|
19
|
-
Main.options = options
|
20
19
|
@test = Test.new(*paths)
|
21
20
|
return if options[:syntax_check]
|
22
21
|
|
@@ -35,7 +34,12 @@ END_OF_TEST
|
|
35
34
|
end
|
36
35
|
|
37
36
|
begin
|
38
|
-
|
37
|
+
if Pickaxe::WINDOWS_IT_IS
|
38
|
+
puts "! Hit Control-Z + [Enter] to end test\n\n"
|
39
|
+
else
|
40
|
+
puts "! Hit Control-D or Control-C to end test.\n\n".color(:green)
|
41
|
+
end
|
42
|
+
|
39
43
|
while @current_index < @questions.length + (Main.options[:full_test] ? 1 : 0) do
|
40
44
|
@question = @questions[@current_index]
|
41
45
|
|
data/lib/pickaxe/shell.rb
CHANGED
@@ -2,10 +2,16 @@ module Pickaxe
|
|
2
2
|
module Shell
|
3
3
|
# Extracted from
|
4
4
|
# https://github.com/wycats/thor/blob/master/lib/thor/shell/basic.rb
|
5
|
+
#
|
6
|
+
# This is turned off on Windows and returns always 80
|
5
7
|
def self.dynamic_width
|
6
|
-
|
8
|
+
if Pickaxe::WINDOWS_IT_IS
|
9
|
+
80
|
10
|
+
else
|
11
|
+
(dynamic_width_stty.nonzero? || dynamic_width_tput)
|
12
|
+
end
|
7
13
|
end
|
8
|
-
|
14
|
+
private
|
9
15
|
def self.dynamic_width_stty
|
10
16
|
%x{stty size 2>/dev/null}.split[1].to_i
|
11
17
|
end
|
data/lib/pickaxe/test.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
module Pickaxe
|
2
2
|
class TestLine < String
|
3
3
|
attr_accessor :index
|
4
|
-
def initialize(itself, index)
|
5
|
-
super(itself)
|
4
|
+
def initialize(itself, index)
|
6
5
|
self.index = index + 1
|
6
|
+
if Pickaxe::WINDOWS_IT_IS
|
7
|
+
replace(itself.to_ascii)
|
8
|
+
else
|
9
|
+
replace(itself)
|
10
|
+
end
|
7
11
|
end
|
8
12
|
end
|
9
13
|
|
@@ -15,7 +19,7 @@ module Pickaxe
|
|
15
19
|
include Enumerable
|
16
20
|
|
17
21
|
# Ruby-comments and C-comments
|
18
|
-
COMMENTS_RE = /^\s
|
22
|
+
COMMENTS_RE = /^\s*(#|\/\/|;).*/
|
19
23
|
|
20
24
|
def initialize(*files)
|
21
25
|
@files = files.collect do |file_or_directory|
|
@@ -26,13 +30,13 @@ module Pickaxe
|
|
26
30
|
if File.file?(file_or_directory)
|
27
31
|
file_or_directory
|
28
32
|
else
|
29
|
-
Dir.glob("#{file_or_directory}/*.#{Main.options[:extension]}")
|
33
|
+
Dir.glob("#{file_or_directory.gsub("\\", "/")}/*.#{Main.options[:extension]}")
|
30
34
|
end
|
31
35
|
end.flatten.collect { |f| f.squeeze('/') }
|
32
36
|
|
33
37
|
@questions = []
|
34
38
|
@files.inject(nil) do |last, file|
|
35
|
-
File.open(file) do |f|
|
39
|
+
File.open(file, "r:UTF-8") do |f|
|
36
40
|
lines = f.readlines.collect(&:strip).each_with_index.collect do |l, i|
|
37
41
|
TestLine.new(l, i)
|
38
42
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Pickaxe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dawid Fatyga
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-07 00:00:00 +01:00
|
19
19
|
default_executable: bin/pickaxe
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -66,6 +66,22 @@ dependencies:
|
|
66
66
|
name: i18n
|
67
67
|
prerelease: false
|
68
68
|
type: :runtime
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - "="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 17
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 1
|
79
|
+
- 1
|
80
|
+
version: 1.1.1
|
81
|
+
requirement: *id004
|
82
|
+
name: unidecoder
|
83
|
+
prerelease: false
|
84
|
+
type: :runtime
|
69
85
|
description: |
|
70
86
|
Pickaxe provides a simple way to load, solve and rate tests (bundle of questions)
|
71
87
|
written in simple text format.
|