ripl-rc 0.2.1 → 0.2.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.
- data/.gitmodules +3 -0
- data/CHANGES +5 -0
- data/Rakefile +1 -1
- data/lib/ripl/rc.rb +14 -0
- data/lib/ripl/rc/multiline.rb +7 -12
- data/lib/ripl/rc/multiline_history.rb +30 -0
- data/lib/ripl/rc/multiline_history_file.rb +35 -0
- data/lib/ripl/rc/squeeze_history.rb +0 -10
- data/lib/ripl/rc/version.rb +1 -1
- data/ripl-rc.gemspec +57 -15
- data/task/gemgem.rb +13 -2
- metadata +14 -11
data/.gitmodules
ADDED
data/CHANGES
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= ripl-rc changes history
|
2
2
|
|
3
|
+
== ripl-rc 0.2.2 -- 2011-06-01
|
4
|
+
|
5
|
+
* [multiline_history ] fixed multiline_history
|
6
|
+
* [multiline_history_file] now we have persistent multiline_history
|
7
|
+
|
3
8
|
== ripl-rc 0.2.1 -- 2011-04-11
|
4
9
|
|
5
10
|
* [multiline] fixed history with editline (e.g. mac's build-in ruby)
|
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ task 'gem:spec' do
|
|
12
12
|
s.version = Ripl::Rc::VERSION
|
13
13
|
s.executables = [s.name]
|
14
14
|
|
15
|
-
%w[ripl] .each{ |g| s.add_runtime_dependency(g) }
|
15
|
+
%w[ripl] .each{ |g| s.add_runtime_dependency(g, '>=0.4.1') }
|
16
16
|
%w[bacon rr].each{ |g| s.add_development_dependency(g) }
|
17
17
|
end
|
18
18
|
|
data/lib/ripl/rc.rb
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
|
2
|
+
# this really messes thing up! should be loaded first if we're using
|
3
|
+
# ripl/rc/multiline_history_file, otherwise, history couldn't really
|
4
|
+
# be overridden...
|
5
|
+
require 'ripl'
|
6
|
+
if Ripl.config[:readline] == true
|
7
|
+
require 'readline'
|
8
|
+
require 'ripl/readline'
|
9
|
+
elsif Ripl.config[:readline]
|
10
|
+
require Ripl.config[:readline].to_s
|
11
|
+
require 'ripl/readline'
|
12
|
+
end
|
13
|
+
|
2
14
|
# upon session ends
|
3
15
|
require 'ripl/rc/squeeze_history'
|
16
|
+
require 'ripl/rc/multiline_history_file'
|
4
17
|
require 'ripl/rc/mkdir_history'
|
5
18
|
require 'ripl/rc/ctrld_newline'
|
6
19
|
|
@@ -13,6 +26,7 @@ require 'ripl/rc/color'
|
|
13
26
|
|
14
27
|
# upon input
|
15
28
|
require 'ripl/rc/multiline'
|
29
|
+
require 'ripl/rc/multiline_history'
|
16
30
|
require 'ripl/rc/eat_whites'
|
17
31
|
|
18
32
|
# speical tool
|
data/lib/ripl/rc/multiline.rb
CHANGED
@@ -10,12 +10,13 @@ module Ripl::Rc::Multiline
|
|
10
10
|
# ruby -e '{'
|
11
11
|
# ruby -e '['
|
12
12
|
# ruby -e '('
|
13
|
+
# ruby -e '/'
|
13
14
|
# ruby -e 'class C'
|
14
15
|
# ruby -e 'def f'
|
15
16
|
# ruby -e 'begin'
|
16
17
|
ERROR_REGEXP = Regexp.new(
|
17
|
-
[ # string
|
18
|
-
"unterminated
|
18
|
+
[ # string or regexp
|
19
|
+
"unterminated \\w+ meets end of file",
|
19
20
|
# mri and rubinius
|
20
21
|
"syntax error, unexpected \\$end",
|
21
22
|
# rubinius
|
@@ -51,7 +52,6 @@ module Ripl::Rc::Multiline
|
|
51
52
|
return super if Multiline.disabled?
|
52
53
|
if e.is_a?(SyntaxError) && e.message =~ ERROR_REGEXP
|
53
54
|
@rc_multiline_buffer << @input if @rc_multiline_buffer.empty?
|
54
|
-
history.pop
|
55
55
|
throw :rc_multiline_cont
|
56
56
|
else
|
57
57
|
super
|
@@ -64,9 +64,7 @@ module Ripl::Rc::Multiline
|
|
64
64
|
super
|
65
65
|
else
|
66
66
|
@rc_multiline_buffer << input
|
67
|
-
|
68
|
-
history << "\n" + (str = @rc_multiline_buffer.join("\n"))
|
69
|
-
super str
|
67
|
+
super @rc_multiline_buffer.join("\n")
|
70
68
|
end
|
71
69
|
end
|
72
70
|
|
@@ -76,12 +74,9 @@ module Ripl::Rc::Multiline
|
|
76
74
|
super
|
77
75
|
else
|
78
76
|
line = @rc_multiline_buffer.pop
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
puts "[removed this line: #{line}]"
|
83
|
-
throw :rc_multiline_cont
|
84
|
-
end
|
77
|
+
print "[removed this line: #{line}]"
|
78
|
+
super
|
79
|
+
throw :rc_multiline_cont
|
85
80
|
end
|
86
81
|
end
|
87
82
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
require 'ripl/rc/u'
|
3
|
+
require 'ripl/rc/multiline' # dependency
|
4
|
+
|
5
|
+
module Ripl::Rc::MultilineHistory
|
6
|
+
include Ripl::Rc::U
|
7
|
+
|
8
|
+
def loop_eval(input)
|
9
|
+
return super if MultilineHistory.disabled?
|
10
|
+
result = super # might throw
|
11
|
+
unless @rc_multiline_buffer.empty?
|
12
|
+
(@rc_multiline_buffer.size + (@rc_multiline_trash || 0)).
|
13
|
+
times{ history.pop }
|
14
|
+
@rc_multiline_trash = 0
|
15
|
+
history << "\n" + @rc_multiline_buffer.join("\n")
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
|
20
|
+
def handle_interrupt
|
21
|
+
return super if MultilineHistory.disabled?
|
22
|
+
unless @rc_multiline_buffer.empty?
|
23
|
+
@rc_multiline_trash ||= 0
|
24
|
+
@rc_multiline_trash += 1
|
25
|
+
end
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Ripl::Shell.include(Ripl::Rc::MultilineHistory)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
require 'ripl/rc/u'
|
3
|
+
# require 'ripl/rc/history_ivar' # dependency
|
4
|
+
|
5
|
+
module Ripl::Rc::MultilineHistoryFile
|
6
|
+
include Ripl::Rc::U
|
7
|
+
|
8
|
+
def write_history
|
9
|
+
return super if MultilineHistoryFile.disabled?
|
10
|
+
@history = history.to_a.map{ |line|
|
11
|
+
line.gsub("\n", "#{Ripl.config[:rc_multiline_history_file_token]}\n")
|
12
|
+
}
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def before_loop
|
17
|
+
return super if MultilineHistoryFile.disabled?
|
18
|
+
super # this would initilaize @history to [], nothing we can do here
|
19
|
+
buffer = []
|
20
|
+
File.exist?(history_file) &&
|
21
|
+
IO.readlines(history_file).each{ |line|
|
22
|
+
if line.end_with?(
|
23
|
+
"#{Ripl.config[:rc_multiline_history_file_token]}\n")
|
24
|
+
buffer << line[0...
|
25
|
+
-Ripl.config[:rc_multiline_history_file_token].size-1] + "\n"
|
26
|
+
else
|
27
|
+
history << (buffer.join + line).chomp
|
28
|
+
buffer = []
|
29
|
+
end
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Ripl::Shell.include(Ripl::Rc::MultilineHistoryFile)
|
35
|
+
Ripl.config[:rc_multiline_history_file_token] ||= ' '
|
@@ -4,11 +4,6 @@ require 'ripl/rc/u'
|
|
4
4
|
module Ripl::Rc::SqueezeHistory
|
5
5
|
include Ripl::Rc::U
|
6
6
|
|
7
|
-
# avoid some complicated conditions...
|
8
|
-
def history
|
9
|
-
super || (@history ||= [])
|
10
|
-
end
|
11
|
-
|
12
7
|
# write squeezed history
|
13
8
|
def write_history
|
14
9
|
return super if SqueezeHistory.disabled?
|
@@ -26,11 +21,6 @@ module Ripl::Rc::SqueezeHistory
|
|
26
21
|
super
|
27
22
|
end
|
28
23
|
|
29
|
-
def before_loop
|
30
|
-
return super if SqueezeHistory.disabled?
|
31
|
-
super if history.empty?
|
32
|
-
end
|
33
|
-
|
34
24
|
module Imp
|
35
25
|
def squeeze_history history
|
36
26
|
history.to_a.inject([]){ |result, item|
|
data/lib/ripl/rc/version.rb
CHANGED
data/ripl-rc.gemspec
CHANGED
@@ -2,37 +2,79 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{ripl-rc}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.date = %q{2011-
|
8
|
+
s.authors = [%q{Lin Jen-Shin (godfat)}]
|
9
|
+
s.date = %q{2011-06-01}
|
10
10
|
s.description = %q{ripl plugins collection, take you want, leave you don't.}
|
11
|
-
s.email = [
|
12
|
-
s.executables = [
|
13
|
-
s.extra_rdoc_files = [
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
s.
|
11
|
+
s.email = [%q{godfat (XD) godfat.org}]
|
12
|
+
s.executables = [%q{ripl-rc}]
|
13
|
+
s.extra_rdoc_files = [
|
14
|
+
%q{CHANGES},
|
15
|
+
%q{CONTRIBUTORS},
|
16
|
+
%q{LICENSE},
|
17
|
+
%q{TODO}]
|
18
|
+
s.files = [
|
19
|
+
%q{.gitignore},
|
20
|
+
%q{.gitmodules},
|
21
|
+
%q{2011-02-28.md},
|
22
|
+
%q{CHANGES},
|
23
|
+
%q{CONTRIBUTORS},
|
24
|
+
%q{Gemfile},
|
25
|
+
%q{LICENSE},
|
26
|
+
%q{README},
|
27
|
+
%q{README.md},
|
28
|
+
%q{Rakefile},
|
29
|
+
%q{TODO},
|
30
|
+
%q{bin/ripl-rc},
|
31
|
+
%q{lib/ripl-rc.rb},
|
32
|
+
%q{lib/ripl/rc.rb},
|
33
|
+
%q{lib/ripl/rc/anchor.rb},
|
34
|
+
%q{lib/ripl/rc/color.rb},
|
35
|
+
%q{lib/ripl/rc/ctrld_newline.rb},
|
36
|
+
%q{lib/ripl/rc/eat_whites.rb},
|
37
|
+
%q{lib/ripl/rc/last_exception.rb},
|
38
|
+
%q{lib/ripl/rc/mkdir_history.rb},
|
39
|
+
%q{lib/ripl/rc/multiline.rb},
|
40
|
+
%q{lib/ripl/rc/multiline_history.rb},
|
41
|
+
%q{lib/ripl/rc/multiline_history_file.rb},
|
42
|
+
%q{lib/ripl/rc/noirbrc.rb},
|
43
|
+
%q{lib/ripl/rc/squeeze_history.rb},
|
44
|
+
%q{lib/ripl/rc/strip_backtrace.rb},
|
45
|
+
%q{lib/ripl/rc/test.rb},
|
46
|
+
%q{lib/ripl/rc/u.rb},
|
47
|
+
%q{lib/ripl/rc/version.rb},
|
48
|
+
%q{ripl-rc.gemspec},
|
49
|
+
%q{screenshot.png},
|
50
|
+
%q{task/gemgem.rb},
|
51
|
+
%q{test/test_disable_shortcut.rb},
|
52
|
+
%q{test/test_squeeze_history.rb}]
|
53
|
+
s.homepage = %q{https://github.com/godfat/}
|
54
|
+
s.rdoc_options = [
|
55
|
+
%q{--main},
|
56
|
+
%q{README}]
|
57
|
+
s.require_paths = [%q{lib}]
|
58
|
+
s.rubygems_version = %q{1.8.5}
|
19
59
|
s.summary = %q{ripl plugins collection, take you want, leave you don't.}
|
20
|
-
s.test_files = [
|
60
|
+
s.test_files = [
|
61
|
+
%q{test/test_disable_shortcut.rb},
|
62
|
+
%q{test/test_squeeze_history.rb}]
|
21
63
|
|
22
64
|
if s.respond_to? :specification_version then
|
23
65
|
s.specification_version = 3
|
24
66
|
|
25
67
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_runtime_dependency(%q<ripl>, [">= 0"])
|
68
|
+
s.add_runtime_dependency(%q<ripl>, [">= 0.4.1"])
|
27
69
|
s.add_development_dependency(%q<bacon>, [">= 0"])
|
28
70
|
s.add_development_dependency(%q<rr>, [">= 0"])
|
29
71
|
else
|
30
|
-
s.add_dependency(%q<ripl>, [">= 0"])
|
72
|
+
s.add_dependency(%q<ripl>, [">= 0.4.1"])
|
31
73
|
s.add_dependency(%q<bacon>, [">= 0"])
|
32
74
|
s.add_dependency(%q<rr>, [">= 0"])
|
33
75
|
end
|
34
76
|
else
|
35
|
-
s.add_dependency(%q<ripl>, [">= 0"])
|
77
|
+
s.add_dependency(%q<ripl>, [">= 0.4.1"])
|
36
78
|
s.add_dependency(%q<bacon>, [">= 0"])
|
37
79
|
s.add_dependency(%q<rr>, [">= 0"])
|
38
80
|
end
|
data/task/gemgem.rb
CHANGED
@@ -11,7 +11,7 @@ module Gemgem
|
|
11
11
|
yield(spec = Gem::Specification.new{ |s|
|
12
12
|
s.authors = ['Lin Jen-Shin (godfat)']
|
13
13
|
s.email = ['godfat (XD) godfat.org']
|
14
|
-
s.homepage = "
|
14
|
+
s.homepage = "https://github.com/godfat/#{s.name}"
|
15
15
|
|
16
16
|
s.summary = File.read("#{Gemgem.dir}/README").
|
17
17
|
match(/DESCRIPTION:\n\n(.+?)\n\n/m)[1]
|
@@ -33,7 +33,18 @@ module Gemgem
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def write
|
36
|
-
File.open("#{dir}/#{spec.name}.gemspec", 'w'){ |f|
|
36
|
+
File.open("#{dir}/#{spec.name}.gemspec", 'w'){ |f|
|
37
|
+
f << split_lines(spec.to_ruby) }
|
38
|
+
end
|
39
|
+
|
40
|
+
def split_lines ruby
|
41
|
+
ruby.gsub(/(.+?)\[(.+?)\]/){ |s|
|
42
|
+
if $2.index(',')
|
43
|
+
"#{$1}[\n #{$2.split(',').map(&:strip).join(",\n ")}]"
|
44
|
+
else
|
45
|
+
s
|
46
|
+
end
|
47
|
+
}
|
37
48
|
end
|
38
49
|
|
39
50
|
def all_files
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripl-rc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-06-01 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ripl
|
16
|
-
requirement: &
|
16
|
+
requirement: &2168485380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 0.4.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2168485380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bacon
|
27
|
-
requirement: &
|
27
|
+
requirement: &2168484900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2168484900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rr
|
38
|
-
requirement: &
|
38
|
+
requirement: &2168484420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2168484420
|
47
47
|
description: ripl plugins collection, take you want, leave you don't.
|
48
48
|
email:
|
49
49
|
- godfat (XD) godfat.org
|
@@ -57,6 +57,7 @@ extra_rdoc_files:
|
|
57
57
|
- TODO
|
58
58
|
files:
|
59
59
|
- .gitignore
|
60
|
+
- .gitmodules
|
60
61
|
- 2011-02-28.md
|
61
62
|
- CHANGES
|
62
63
|
- CONTRIBUTORS
|
@@ -76,6 +77,8 @@ files:
|
|
76
77
|
- lib/ripl/rc/last_exception.rb
|
77
78
|
- lib/ripl/rc/mkdir_history.rb
|
78
79
|
- lib/ripl/rc/multiline.rb
|
80
|
+
- lib/ripl/rc/multiline_history.rb
|
81
|
+
- lib/ripl/rc/multiline_history_file.rb
|
79
82
|
- lib/ripl/rc/noirbrc.rb
|
80
83
|
- lib/ripl/rc/squeeze_history.rb
|
81
84
|
- lib/ripl/rc/strip_backtrace.rb
|
@@ -87,7 +90,7 @@ files:
|
|
87
90
|
- task/gemgem.rb
|
88
91
|
- test/test_disable_shortcut.rb
|
89
92
|
- test/test_squeeze_history.rb
|
90
|
-
homepage:
|
93
|
+
homepage: https://github.com/godfat/
|
91
94
|
licenses: []
|
92
95
|
post_install_message:
|
93
96
|
rdoc_options:
|
@@ -109,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
112
|
version: '0'
|
110
113
|
requirements: []
|
111
114
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.
|
115
|
+
rubygems_version: 1.8.5
|
113
116
|
signing_key:
|
114
117
|
specification_version: 3
|
115
118
|
summary: ripl plugins collection, take you want, leave you don't.
|