konjac 0.3.2 → 0.3.3
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 +1 -1
- data/lib/konjac/office/generic.rb +49 -27
- data/lib/konjac/office/item.rb +49 -0
- data/lib/konjac/office/mac/excel.rb +10 -36
- data/lib/konjac/office/mac/power_point.rb +6 -29
- data/lib/konjac/office/mac/shared.rb +9 -1
- data/lib/konjac/office/mac/word.rb +56 -79
- data/lib/konjac/version.rb +1 -1
- data/spec/office/excel_spec.rb +1 -2
- data/spec/office/power_point_spec.rb +1 -2
- data/spec/office/word_spec.rb +2 -3
- metadata +31 -32
- data/spec/office/generic_spec.rb +0 -72
data/Rakefile
CHANGED
@@ -4,24 +4,52 @@ module Konjac
|
|
4
4
|
# This is a basic class that contains all the methods that are universal
|
5
5
|
# across OSes, file formats, applications, etc.
|
6
6
|
class Generic
|
7
|
+
autoload :Item, "konjac/office/item"
|
8
|
+
|
7
9
|
attr_reader :document, :index, :current
|
8
10
|
|
9
11
|
def initialize(location = nil)
|
10
12
|
@document = open(File.expand_path(location)) unless location.nil?
|
11
13
|
@document = active_document
|
14
|
+
@item_opts = {
|
15
|
+
:application => @application,
|
16
|
+
:document => @document,
|
17
|
+
:delimiter => "\r"
|
18
|
+
}
|
19
|
+
@shape_opts = {
|
20
|
+
:application => @application,
|
21
|
+
:document => @document,
|
22
|
+
:delimiter => "\v"
|
23
|
+
}
|
12
24
|
@index = 0
|
13
25
|
@current = nil
|
14
26
|
end
|
15
27
|
|
16
|
-
|
17
|
-
|
28
|
+
def [](*args)
|
29
|
+
opts = parse_args(*args)
|
30
|
+
return shape_at(opts) if opts[:type] == :shape
|
31
|
+
|
32
|
+
Item.new @item_opts.merge(opts)
|
33
|
+
end
|
34
|
+
alias :item_at :[]
|
35
|
+
|
36
|
+
def []=(*args)
|
37
|
+
write args.pop, *args
|
38
|
+
end
|
39
|
+
|
40
|
+
def shape_at(*args)
|
41
|
+
last_item = args.last
|
42
|
+
last_item = { :type => :shape }.merge(last_item) if last_item.is_a?(Hash)
|
43
|
+
opts = parse_args(*args)
|
44
|
+
Item.new @shape_opts.merge(opts)
|
45
|
+
end
|
46
|
+
|
18
47
|
def write(text, *args)
|
19
|
-
|
48
|
+
item_at(*args).write text
|
20
49
|
end
|
21
50
|
|
22
51
|
def read(*args)
|
23
|
-
|
24
|
-
clean find(opts), (opts.nil? ? nil : opts[:type])
|
52
|
+
item_at(*args).read
|
25
53
|
end
|
26
54
|
|
27
55
|
def tags
|
@@ -35,22 +63,12 @@ module Konjac
|
|
35
63
|
def import
|
36
64
|
tags.each do |tag|
|
37
65
|
if tag.changed? && !tag.blank?
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
# Provides the delimiters used for Word documents
|
45
|
-
def delimiter(type)
|
46
|
-
if type.nil?
|
47
|
-
"\r"
|
48
|
-
else
|
49
|
-
case type
|
50
|
-
when :shape
|
51
|
-
"\v"
|
52
|
-
else
|
53
|
-
"\r"
|
66
|
+
if tag.type == :shape
|
67
|
+
added = tag.added.join(@shape_opts[:delimiter])
|
68
|
+
else
|
69
|
+
added = tag.added.join(@item_opts[:delimiter])
|
70
|
+
end
|
71
|
+
write added, *tag.indices, :type => tag.type
|
54
72
|
end
|
55
73
|
end
|
56
74
|
end
|
@@ -63,14 +81,18 @@ module Konjac
|
|
63
81
|
# Extract final argument if it's a hash
|
64
82
|
parsed = args.last.is_a?(Hash) ? args.pop : {}
|
65
83
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
84
|
+
if parsed[:type] == :shape
|
85
|
+
# Create hash using @parse_order as keys and args as values, then merge
|
86
|
+
# that with any pre-parsed hashes. Arguments specified via the hash have
|
87
|
+
# priority
|
88
|
+
parsed = Hash[@shape_opts[:ref_path].zip(args)].merge(parsed)
|
89
|
+
else
|
90
|
+
parsed = Hash[@item_opts[:ref_path].zip(args)].merge(parsed)
|
91
|
+
end
|
70
92
|
end
|
71
93
|
|
72
|
-
def clean(text,
|
73
|
-
|
94
|
+
def clean(text, opts)
|
95
|
+
|
74
96
|
end
|
75
97
|
end
|
76
98
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Konjac
|
3
|
+
module Office
|
4
|
+
class Generic
|
5
|
+
class Item
|
6
|
+
def initialize(opts = {})
|
7
|
+
@opts = opts
|
8
|
+
|
9
|
+
item = @opts[:document]
|
10
|
+
@opts[:ref_path].each do |node|
|
11
|
+
item = item.send(pluralize(node))[opts[node]]
|
12
|
+
end
|
13
|
+
@ref = item
|
14
|
+
end
|
15
|
+
|
16
|
+
def content
|
17
|
+
return @content unless @content.nil?
|
18
|
+
|
19
|
+
@content = @ref
|
20
|
+
@opts[:content_path].each do |node|
|
21
|
+
@content = @content.send(node)
|
22
|
+
end
|
23
|
+
@content
|
24
|
+
end
|
25
|
+
|
26
|
+
def read
|
27
|
+
clean content.send(@opts[:read])
|
28
|
+
end
|
29
|
+
|
30
|
+
def write(text)
|
31
|
+
content.send @opts[:write], text
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# Definitely the most naive pluralization method ever, but there's no
|
37
|
+
# sense using an implementation as detailed as ActiveSupport's until a
|
38
|
+
# use case arises
|
39
|
+
def pluralize(text)
|
40
|
+
"#{text.to_s}s"
|
41
|
+
end
|
42
|
+
|
43
|
+
def clean(text)
|
44
|
+
text.gsub(@opts[:strippable], "").split(@opts[:delimiter])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -7,8 +7,16 @@ module Konjac
|
|
7
7
|
super "Microsoft Excel", path
|
8
8
|
@strippable = //
|
9
9
|
@delimiter = "\r"
|
10
|
-
@
|
11
|
-
|
10
|
+
@item_opts.merge!({
|
11
|
+
:ref_path => [:sheet, :row, :cell],
|
12
|
+
:content_path => [:formula],
|
13
|
+
:strippable => /[\r\n\a]+$/
|
14
|
+
})
|
15
|
+
@shape_opts.merge!({
|
16
|
+
:ref_path => [:sheet, :shape],
|
17
|
+
:content_path => [:text_frame, :characters, :content],
|
18
|
+
:strippable => /[\r\n\a]+$/
|
19
|
+
})
|
12
20
|
end
|
13
21
|
|
14
22
|
# Retrieves the active document and caches it
|
@@ -16,21 +24,6 @@ module Konjac
|
|
16
24
|
@active_document ||= @application.active_workbook
|
17
25
|
end
|
18
26
|
|
19
|
-
def write(text, *args)
|
20
|
-
opts = super(text, *args)
|
21
|
-
if opts.map(&:last).all?(&:nil?)
|
22
|
-
@current.formula.set text
|
23
|
-
elsif opts[:type].nil? || opts[:type].empty?
|
24
|
-
opts = parse_args(*args)
|
25
|
-
@document.sheets[opts[:sheet]]
|
26
|
-
.rows[opts[:row]]
|
27
|
-
.cells[opts[:cell]].formula.set text
|
28
|
-
else
|
29
|
-
@document.sheets[opts[:sheet]]
|
30
|
-
.shapes[opts[:row]].text_frame.characters.content.set text
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
27
|
# Creates a dump of the spreadsheet's data in Tag form
|
35
28
|
def data
|
36
29
|
tags = []
|
@@ -58,25 +51,6 @@ module Konjac
|
|
58
51
|
tags
|
59
52
|
end
|
60
53
|
|
61
|
-
# Finds the paragraph indicated by the provided index
|
62
|
-
# TODO: Clean up the second unless statement
|
63
|
-
def find(*args)
|
64
|
-
unless args.empty? || args.nil?
|
65
|
-
opts = parse_args(*args)
|
66
|
-
if (opts[:type].nil? || opts[:type].empty?) && !opts.map(&:last).all?(&:nil?)
|
67
|
-
@index = [opts[:sheet], opts[:row], opts[:cell]]
|
68
|
-
@current = @document.sheets[opts[:sheet]]
|
69
|
-
.rows[opts[:row]]
|
70
|
-
.cells[opts[:cell]]
|
71
|
-
elsif opts[:type] == :shape
|
72
|
-
return @document.sheets[opts[:sheet]]
|
73
|
-
.shapes[opts[:row]].text_frame.characters.content.get
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
@current.formula.get
|
78
|
-
end
|
79
|
-
|
80
54
|
# Retrieves the number of cells in the document. Note that this method
|
81
55
|
# fetches all row and column elements and can thus be very expensive for
|
82
56
|
# large spreadsheets.
|
@@ -7,7 +7,12 @@ module Konjac
|
|
7
7
|
super "Microsoft PowerPoint", path
|
8
8
|
@strippable = //
|
9
9
|
@parse_order = [:slide, :shape]
|
10
|
-
|
10
|
+
@item_opts.merge!({
|
11
|
+
:ref_path => [:slide, :shape],
|
12
|
+
:content_path => [:text_frame, :text_range, :content],
|
13
|
+
:strippable => //
|
14
|
+
})
|
15
|
+
@shape_opts = @item_opts
|
11
16
|
end
|
12
17
|
|
13
18
|
# Retrieves the active document and caches it
|
@@ -15,16 +20,6 @@ module Konjac
|
|
15
20
|
@active_document ||= @application.active_presentation
|
16
21
|
end
|
17
22
|
|
18
|
-
def write(text, *args)
|
19
|
-
if args.empty?
|
20
|
-
@current.text_frame.text_range.content.set text
|
21
|
-
else
|
22
|
-
opts = parse_args(*args)
|
23
|
-
@document.slides[opts[:slide]]
|
24
|
-
.shapes[opts[:shape]].text_frame.text_range.content.set text
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
23
|
# Creates a dump of the spreadsheet's data in Tag form
|
29
24
|
def data
|
30
25
|
tags = []
|
@@ -39,30 +34,12 @@ module Konjac
|
|
39
34
|
tags
|
40
35
|
end
|
41
36
|
|
42
|
-
# Finds the paragraph indicated by the provided index
|
43
|
-
def find(*args)
|
44
|
-
unless args.empty? || args.nil?
|
45
|
-
@indices = args
|
46
|
-
opts = parse_args(*args)
|
47
|
-
unless opts.map(&:last).all?(&:nil?)
|
48
|
-
@current = @document.slides[opts[:slide]]
|
49
|
-
.shapes[opts[:shape]]
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
@current.text_frame.text_range.content.get
|
54
|
-
end
|
55
|
-
|
56
37
|
# Retrieves the number of cells in the document. Note that this method
|
57
38
|
# fetches all row and column elements and can thus be very expensive for
|
58
39
|
# large spreadsheets.
|
59
40
|
def size
|
60
41
|
end
|
61
42
|
alias :length :size
|
62
|
-
|
63
|
-
def delimiter(type = nil)
|
64
|
-
"\r"
|
65
|
-
end
|
66
43
|
end
|
67
44
|
end
|
68
45
|
end
|
@@ -6,8 +6,16 @@ module Konjac
|
|
6
6
|
module Mac
|
7
7
|
class Shared < Generic
|
8
8
|
def initialize(app_name, path = nil)
|
9
|
-
@application
|
9
|
+
@application = Appscript.app(app_name)
|
10
10
|
super path
|
11
|
+
@item_opts.merge!({
|
12
|
+
:read => :get,
|
13
|
+
:write => :set
|
14
|
+
})
|
15
|
+
@shape_opts.merge!({
|
16
|
+
:read => :get,
|
17
|
+
:write => :set
|
18
|
+
})
|
11
19
|
end
|
12
20
|
|
13
21
|
def open(path)
|
@@ -3,74 +3,83 @@ module Konjac
|
|
3
3
|
module Office
|
4
4
|
module Mac
|
5
5
|
class Word < Shared
|
6
|
+
class WordItem < Item
|
7
|
+
def write(text)
|
8
|
+
para_start = @ref.text_object.start_of_content.get
|
9
|
+
para_end = @ref.text_object.end_of_content.get
|
10
|
+
range = @opts[:document].create_range(:start => para_start,
|
11
|
+
:end_ => para_end - 1)
|
12
|
+
range.select
|
13
|
+
@opts[:application].selection.type_text :text => text
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
6
17
|
def initialize(path = nil)
|
7
18
|
super "Microsoft Word", path
|
8
|
-
@strippable = /[\r\n\a]+$/
|
9
19
|
@index = 1
|
10
20
|
@current = @document.paragraphs[@index]
|
11
|
-
@
|
21
|
+
@item_opts.merge!({
|
22
|
+
:ref_path => [:paragraph],
|
23
|
+
:content_path => [:text_object, :content],
|
24
|
+
:delimiter => "\v",
|
25
|
+
:strippable => /[\r\n\a]+$/
|
26
|
+
})
|
27
|
+
@shape_opts.merge!({
|
28
|
+
:ref_path => [:shape],
|
29
|
+
:content_path => [:text_frame, :text_range, :content],
|
30
|
+
:strippable => /[\r\n\a]+$/
|
31
|
+
})
|
12
32
|
end
|
13
33
|
|
14
|
-
#
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def write(text, *args)
|
20
|
-
opts = super(text, *args)
|
34
|
+
# This overrides the Base#[] method because we need to have a slightly
|
35
|
+
# modified version of the Item object to enable the selection of
|
36
|
+
# paragraph text before writing to it
|
37
|
+
def [](*args)
|
38
|
+
opts = parse_args(*args)
|
21
39
|
if opts[:type].nil? || opts[:type].empty?
|
22
|
-
|
23
|
-
@application.selection.type_text :text => text
|
40
|
+
WordItem.new @item_opts.merge(opts)
|
24
41
|
else
|
25
|
-
|
42
|
+
shape_at opts
|
26
43
|
end
|
27
44
|
end
|
45
|
+
alias :item_at :[]
|
46
|
+
|
47
|
+
# Retrieves the active document and caches it
|
48
|
+
def active_document
|
49
|
+
@active_document ||= @application.active_document
|
50
|
+
end
|
28
51
|
|
29
52
|
# Creates a dump of the document's data in Tag form
|
30
53
|
def data
|
31
|
-
|
32
|
-
@current = @document.paragraphs[@index]
|
33
|
-
|
54
|
+
i = 1
|
34
55
|
tags = []
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
break if succ.nil?
|
56
|
+
begin
|
57
|
+
loop do
|
58
|
+
temp = Tag.new
|
59
|
+
temp.indices = [i]
|
60
|
+
temp.removed = temp.added = item_at(i).read
|
61
|
+
tags << temp unless temp.blank?
|
62
|
+
i += 1
|
63
|
+
end
|
64
|
+
rescue Appscript::CommandError
|
45
65
|
end
|
46
66
|
|
47
67
|
# TODO: I should optimize this later like above, to prevent large
|
48
68
|
# shapes from getting out of hand
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
tags
|
59
|
-
end
|
60
|
-
|
61
|
-
# Finds the paragraph indicated by the provided index
|
62
|
-
def find(*args)
|
63
|
-
unless args.empty? || args.nil?
|
64
|
-
opts = parse_args(*args)
|
65
|
-
if (opts[:type].nil? || opts[:type].empty?) && !opts[:paragraph].nil?
|
66
|
-
@index = opts[:paragraph]
|
67
|
-
@current = @document.paragraphs[opts[:paragraph]]
|
68
|
-
elsif opts[:type] == :shape
|
69
|
-
return @document.shapes[opts[:paragraph]].text_frame.text_range.content.get
|
69
|
+
i = 1
|
70
|
+
begin
|
71
|
+
loop do
|
72
|
+
temp = Tag.new
|
73
|
+
temp.indices = [i]
|
74
|
+
temp.removed = temp.added = shape_at(i).read
|
75
|
+
temp.type = :shape
|
76
|
+
tags << temp unless temp.blank?
|
77
|
+
i += 1
|
70
78
|
end
|
79
|
+
rescue Appscript::CommandError, TypeError
|
71
80
|
end
|
72
81
|
|
73
|
-
|
82
|
+
tags
|
74
83
|
end
|
75
84
|
|
76
85
|
# Retrieves the number of paragraphs in the document. Note that this
|
@@ -90,38 +99,6 @@ module Konjac
|
|
90
99
|
nil
|
91
100
|
end
|
92
101
|
alias :next :succ
|
93
|
-
|
94
|
-
# Provides the delimiters used for Word documents
|
95
|
-
def delimiter(type)
|
96
|
-
if type.nil?
|
97
|
-
"\v"
|
98
|
-
else
|
99
|
-
case type
|
100
|
-
when :shape
|
101
|
-
"\r"
|
102
|
-
else
|
103
|
-
"\v"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
# Selects the paragraph indicated by an indicated, or +nil+ to select
|
109
|
-
# the current paragraph
|
110
|
-
def select(*args)
|
111
|
-
opts = parse_args(*args)
|
112
|
-
find opts
|
113
|
-
para_start = @current.text_object.start_of_content.get
|
114
|
-
para_end = @current.text_object.end_of_content.get
|
115
|
-
range = active_document.create_range(:start => para_start,
|
116
|
-
:end_ => para_end)
|
117
|
-
|
118
|
-
# Move in end of range by length of stripped content less end of table
|
119
|
-
# mark
|
120
|
-
strip_size = range.content.get[@strippable].gsub(/\a/, "").size
|
121
|
-
range = active_document.create_range(:start => para_start,
|
122
|
-
:end_ => para_end - strip_size)
|
123
|
-
range.select
|
124
|
-
end
|
125
102
|
end
|
126
103
|
end
|
127
104
|
end
|
data/lib/konjac/version.rb
CHANGED
data/spec/office/excel_spec.rb
CHANGED
@@ -42,7 +42,7 @@ describe "Excel", :excel do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should open the test document" do
|
45
|
-
@book.
|
45
|
+
@book.should_not be_nil
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should return the same path" do
|
@@ -72,7 +72,6 @@ describe "Excel", :excel do
|
|
72
72
|
|
73
73
|
it "should import all tags correctly" do
|
74
74
|
@export_target.rewind
|
75
|
-
@book.find 1, 1, 1
|
76
75
|
index = 0
|
77
76
|
lines = []
|
78
77
|
File.open(@diff_path, "w") do |file|
|
@@ -41,7 +41,7 @@ describe "PowerPoint", :power_point do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should open the test document" do
|
44
|
-
@deck.
|
44
|
+
@deck.should_not be_nil
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should return the same path" do
|
@@ -70,7 +70,6 @@ describe "PowerPoint", :power_point do
|
|
70
70
|
|
71
71
|
it "should import all tags correctly" do
|
72
72
|
@export_target.rewind
|
73
|
-
@deck.find 1, 1, 1
|
74
73
|
index = 0
|
75
74
|
lines = []
|
76
75
|
File.open(@diff_path, "w") do |file|
|
data/spec/office/word_spec.rb
CHANGED
@@ -70,7 +70,7 @@ describe "Word", :word do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should open the test document" do
|
73
|
-
@doc.
|
73
|
+
@doc.should_not be_nil
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should return the same path" do
|
@@ -100,9 +100,8 @@ describe "Word", :word do
|
|
100
100
|
|
101
101
|
it "should import all tags correctly" do
|
102
102
|
@export_target.rewind
|
103
|
-
@doc.find 1
|
104
|
-
index = 0
|
105
103
|
lines = []
|
104
|
+
index = 1
|
106
105
|
File.open(@diff_path, "w") do |file|
|
107
106
|
@export_target.each do |line|
|
108
107
|
if line =~ /^\+/ && line !~ /^\+\+\+/
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: konjac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: amatch
|
16
|
-
requirement: &
|
16
|
+
requirement: &70324813508240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70324813508240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: git
|
27
|
-
requirement: &
|
27
|
+
requirement: &70324813507600 !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: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70324813507600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: highline
|
38
|
-
requirement: &
|
38
|
+
requirement: &70324813506800 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70324813506800
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: i18n
|
49
|
-
requirement: &
|
49
|
+
requirement: &70324813505260 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70324813505260
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: nokogiri
|
60
|
-
requirement: &
|
60
|
+
requirement: &70324813504560 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70324813504560
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rb-appscript
|
71
|
-
requirement: &
|
71
|
+
requirement: &70324813503920 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70324813503920
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sdoc
|
82
|
-
requirement: &
|
82
|
+
requirement: &70324813503360 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70324813503360
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: term-ansicolor
|
93
|
-
requirement: &
|
93
|
+
requirement: &70324813502040 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70324813502040
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: trollop
|
104
|
-
requirement: &
|
104
|
+
requirement: &70324813500600 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70324813500600
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: autotest
|
115
|
-
requirement: &
|
115
|
+
requirement: &70324813499600 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70324813499600
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: autotest-fsevent
|
126
|
-
requirement: &
|
126
|
+
requirement: &70324813498700 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70324813498700
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: autotest-growl
|
137
|
-
requirement: &
|
137
|
+
requirement: &70324813498080 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70324813498080
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: bundler
|
148
|
-
requirement: &
|
148
|
+
requirement: &70324813497640 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70324813497640
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: rspec
|
159
|
-
requirement: &
|
159
|
+
requirement: &70324813497100 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70324813497100
|
168
168
|
description: A Ruby command-line utility for translating files using a YAML wordlist
|
169
169
|
email:
|
170
170
|
- bryan.mckelvey@gmail.com
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- lib/konjac/language.rb
|
193
193
|
- lib/konjac/office.rb
|
194
194
|
- lib/konjac/office/generic.rb
|
195
|
+
- lib/konjac/office/item.rb
|
195
196
|
- lib/konjac/office/mac.rb
|
196
197
|
- lib/konjac/office/mac/excel.rb
|
197
198
|
- lib/konjac/office/mac/power_point.rb
|
@@ -220,7 +221,6 @@ files:
|
|
220
221
|
- spec/office/bin/sample.pptx
|
221
222
|
- spec/office/bin/sample.xlsx
|
222
223
|
- spec/office/excel_spec.rb
|
223
|
-
- spec/office/generic_spec.rb
|
224
224
|
- spec/office/power_point_spec.rb
|
225
225
|
- spec/office/word_spec.rb
|
226
226
|
- spec/office_spec.rb
|
@@ -259,7 +259,6 @@ test_files:
|
|
259
259
|
- spec/office/bin/sample.pptx
|
260
260
|
- spec/office/bin/sample.xlsx
|
261
261
|
- spec/office/excel_spec.rb
|
262
|
-
- spec/office/generic_spec.rb
|
263
262
|
- spec/office/power_point_spec.rb
|
264
263
|
- spec/office/word_spec.rb
|
265
264
|
- spec/office_spec.rb
|
data/spec/office/generic_spec.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require File.dirname(__FILE__) + "/../spec_helper"
|
3
|
-
|
4
|
-
describe Office::Generic do
|
5
|
-
before :each do
|
6
|
-
# Nuke initializer
|
7
|
-
class Office::Generic
|
8
|
-
def initialize
|
9
|
-
@parse_order = [:paragraph]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
@generic = Office::Generic.new
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "argument parsing" do
|
17
|
-
describe "the first time" do
|
18
|
-
it "should handle no arguments" do
|
19
|
-
@generic.send(:parse_args).should == nil
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should handle one hash" do
|
23
|
-
@generic.send(:parse_args, :paragraph => 1).should == { :paragraph => 1 }
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should handle one argument" do
|
27
|
-
@generic.send(:parse_args, 1).should == { :paragraph => 1 }
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should give a hash precedence over another argument" do
|
31
|
-
@generic.send(:parse_args, 1, :paragraph => 2).should == { :paragraph => 2 }
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "document types with multiple levels" do
|
35
|
-
before :each do
|
36
|
-
@generic.instance_variable_set :@parse_order, [:sheet, :row, :cell]
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should handle a hash with several values" do
|
40
|
-
@generic.send(:parse_args, :sheet => 1, :row => 2, :cell => 3)
|
41
|
-
.should == { :sheet => 1, :row => 2, :cell => 3 }
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should handle several arguments" do
|
45
|
-
@generic.send(:parse_args, 1, 2, 3).should == { :sheet => 1, :row => 2, :cell => 3 }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "multiple times" do
|
51
|
-
before :each do
|
52
|
-
@result = nil
|
53
|
-
@multiple = 3
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should correctly handle no arguments" do
|
57
|
-
@multiple.times do
|
58
|
-
@result = @generic.send(:parse_args)
|
59
|
-
@result.should == nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should correctly handle a completed hash" do
|
64
|
-
@generic.instance_variable_set :@parse_order, []
|
65
|
-
@multiple.times do
|
66
|
-
@result = @generic.send(:parse_args, :sheet => 1, :row => 2, :cell => 3)
|
67
|
-
@result.should == { :sheet => 1, :row => 2, :cell => 3 }
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|