konjac 0.2.9.5 → 0.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/konjac.gemspec +1 -0
- data/lib/konjac.rb +0 -3
- data/lib/konjac/cli.rb +2 -2
- data/lib/konjac/exception.rb +3 -0
- data/lib/konjac/office.rb +64 -257
- data/lib/konjac/office/generic.rb +76 -0
- data/lib/konjac/office/mac.rb +11 -0
- data/lib/konjac/office/mac/excel.rb +73 -0
- data/lib/konjac/office/mac/power_point.rb +68 -0
- data/lib/konjac/office/mac/shared.rb +36 -0
- data/lib/konjac/office/mac/word.rb +114 -0
- data/lib/konjac/office/os.rb +53 -0
- data/lib/konjac/office/tag.rb +91 -0
- data/lib/konjac/office/windows.rb +11 -0
- data/lib/konjac/office/windows/excel.rb +0 -0
- data/lib/konjac/office/windows/power_point.rb +0 -0
- data/lib/konjac/office/windows/shared.rb +2 -0
- data/lib/konjac/office/windows/word.rb +0 -0
- data/lib/konjac/office/xml.rb +11 -0
- data/lib/konjac/office/xml/shared.rb +262 -0
- data/lib/konjac/version.rb +1 -1
- data/lib/locales/en.yml +1 -0
- data/lib/locales/ja.yml +1 -0
- data/spec/office/generic_spec.rb +72 -0
- data/spec/office_spec.rb +37 -0
- metadata +58 -39
- data/lib/applescripts/konjac_excel_export +0 -120
- data/lib/applescripts/konjac_excel_import +0 -112
- data/lib/applescripts/konjac_powerpoint_export +0 -116
- data/lib/applescripts/konjac_powerpoint_import +0 -109
- data/lib/applescripts/konjac_word_export +0 -110
- data/lib/applescripts/konjac_word_import +0 -139
- data/lib/konjac/os.rb +0 -51
- data/lib/konjac/tag.rb +0 -50
- data/lib/konjac/tag_manager.rb +0 -65
- data/spec/tag_spec.rb +0 -63
@@ -0,0 +1,11 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Konjac
|
3
|
+
module Office
|
4
|
+
module Windows
|
5
|
+
autoload :Excel, "konjac/office/windows/excel"
|
6
|
+
autoload :PowerPoint, "konjac/office/windows/power_point"
|
7
|
+
autoload :Shared, "konjac/office/windows/shared"
|
8
|
+
autoload :Word, "konjac/office/windows/word"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Konjac
|
3
|
+
module Office
|
4
|
+
module xml
|
5
|
+
autoload :Excel, "konjac/office/xml/excel"
|
6
|
+
autoload :PowerPoint, "konjac/office/xml/powerpoint"
|
7
|
+
autoload :Shared, "konjac/office/xml/shared"
|
8
|
+
autoload :Word, "konjac/office/xml/word"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,262 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Konjac
|
3
|
+
module Office
|
4
|
+
module XML
|
5
|
+
# Imports the text content of a tag file into a Word 2003+, utilizing a
|
6
|
+
# cleaned-up version of the document's original XML structure
|
7
|
+
def import_xml(files, opts = {})
|
8
|
+
sub_files = Utils.parse_files(files)
|
9
|
+
return if sub_files.empty?
|
10
|
+
sub_files.each do |sub_file|
|
11
|
+
case File.extname(sub_file)
|
12
|
+
when ".docx"
|
13
|
+
# Build the list of paths we need to work with
|
14
|
+
dirname = File.dirname(sub_file)
|
15
|
+
basename = File.basename(sub_file, ".*")
|
16
|
+
orig_docx = "#{dirname}/#{basename}.docx"
|
17
|
+
new_path = "#{dirname}/#{basename}_imported.docx"
|
18
|
+
xml_path = "#{dirname}/#{basename}.xml"
|
19
|
+
tags_path = "#{dirname}/#{basename}.docx.diff"
|
20
|
+
out_path = "#{dirname}/word/document.xml"
|
21
|
+
|
22
|
+
# Open the original XML file and the updated tags
|
23
|
+
writer = Nokogiri::XML(File.read(xml_path))
|
24
|
+
nodes = writer.xpath("//w:t")
|
25
|
+
tags = TagManager.new(tags_path)
|
26
|
+
|
27
|
+
# Overwrite each <w:t> tag's content with the new tag
|
28
|
+
tags.all.each do |tag|
|
29
|
+
if tag.translated?
|
30
|
+
nodes[tag.index].content = tag.translated
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Create a directory for word/document.xml if necessary
|
35
|
+
unless File.directory?("#{dirname}/word")
|
36
|
+
FileUtils.mkdir "#{dirname}/word"
|
37
|
+
end
|
38
|
+
|
39
|
+
# Write the modified XML to a file
|
40
|
+
File.open(out_path, "w") do |file|
|
41
|
+
file.write writer.to_xml.gsub(/\n\s*/, "").sub(/\?></, "?>\n<")
|
42
|
+
end
|
43
|
+
|
44
|
+
# Copy the original file
|
45
|
+
FileUtils.cp orig_docx, new_path
|
46
|
+
|
47
|
+
# Add the new document XML to the copied file
|
48
|
+
system "cd #{dirname} && zip -q #{new_path} word/document.xml"
|
49
|
+
else
|
50
|
+
puts I18n.t(:unknown) % sub_file
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Exports the text content of Microsoft Office document
|
56
|
+
def export_tags(files, opts = {})
|
57
|
+
# Determine whether to attempt translating
|
58
|
+
if opts[:from_given] && opts[:to_given]
|
59
|
+
from_lang = Language.find(opts[:from])
|
60
|
+
to_lang = Language.find(opts[:to])
|
61
|
+
unless from_lang.nil? || to_lang.nil?
|
62
|
+
Translator.load_dictionary from_lang, to_lang, opts
|
63
|
+
attempting_to_translate = true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
sub_files = Utils.parse_files(files)
|
68
|
+
return if sub_files.empty?
|
69
|
+
sub_files.each do |sub_file|
|
70
|
+
case File.extname(sub_file)
|
71
|
+
when ".doc", ".docx"
|
72
|
+
return if OS.not_a_mac
|
73
|
+
break unless Utils.user_allows_overwrite?(sub_file + ".diff")
|
74
|
+
|
75
|
+
system File.join(File.dirname(__FILE__), "..", "applescripts", "konjac_word_export"), sub_file
|
76
|
+
when ".ppt", ".pptx"
|
77
|
+
return if OS.not_a_mac
|
78
|
+
break unless Utils.user_allows_overwrite?(sub_file + ".diff")
|
79
|
+
|
80
|
+
system File.join(File.dirname(__FILE__), "..", "applescripts", "konjac_powerpoint_export"), sub_file
|
81
|
+
when ".xls", ".xlsx"
|
82
|
+
return if OS.not_a_mac
|
83
|
+
break unless Utils.user_allows_overwrite?(sub_file + ".diff")
|
84
|
+
|
85
|
+
system File.join(File.dirname(__FILE__), "..", "applescripts", "konjac_excel_export"), sub_file
|
86
|
+
else
|
87
|
+
puts I18n.t(:unknown) % sub_file
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Exports the Word document in XML then extracts the tags and condenses
|
93
|
+
# like paragraphs
|
94
|
+
#
|
95
|
+
# I might deprecate this, but it exports XML. It's much faster, but
|
96
|
+
# supporting two methods might not be a great idea.
|
97
|
+
def export_xml(files, opts = {})
|
98
|
+
# Determine whether to attempt translating
|
99
|
+
if opts[:from_given] && opts[:to_given]
|
100
|
+
from_lang = Language.find(opts[:from])
|
101
|
+
to_lang = Language.find(opts[:to])
|
102
|
+
unless from_lang.nil? || to_lang.nil?
|
103
|
+
Translator.load_dictionary from_lang, to_lang, opts
|
104
|
+
attempting_to_translate = true
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
sub_files = Utils.parse_files(files)
|
109
|
+
return if sub_files.empty?
|
110
|
+
sub_files.each do |sub_file|
|
111
|
+
case File.extname(sub_file)
|
112
|
+
when ".docx"
|
113
|
+
# Build a list of all the paths we're working with
|
114
|
+
dirname = File.dirname(sub_file)
|
115
|
+
basename = File.basename(sub_file, ".*")
|
116
|
+
orig_docx = "#{dirname}/#{basename}.docx"
|
117
|
+
xml_path = "#{dirname}/#{basename}_orig.xml"
|
118
|
+
clean_path = "#{dirname}/#{basename}.xml"
|
119
|
+
tags_path = "#{dirname}/#{basename}.docx.diff"
|
120
|
+
|
121
|
+
break unless Utils.user_allows_overwrite?(tags_path)
|
122
|
+
|
123
|
+
# Unzip the DOCX's word/document.xml file and pipe the output into
|
124
|
+
# an XML with the same base name as the DOCX
|
125
|
+
system "unzip -p #{orig_docx} word/document.xml > #{xml_path}"
|
126
|
+
|
127
|
+
# Read in the XML file and extract the content from each <w:t> tag
|
128
|
+
cleaner = Nokogiri::XML(File.read(xml_path))
|
129
|
+
File.open(tags_path, "w") do |tags_file|
|
130
|
+
# Remove all grammar and spellcheck tags
|
131
|
+
cleaner.xpath("//w:proofErr").remove
|
132
|
+
|
133
|
+
nodes = cleaner.xpath("//w:r")
|
134
|
+
prev = nil
|
135
|
+
nodes.each do |node|
|
136
|
+
unless prev.nil?
|
137
|
+
if (prev.next_sibling == node) && compare_nodes(prev, node)
|
138
|
+
begin
|
139
|
+
node.at_xpath("w:t").content = prev.at_xpath("w:t").content +
|
140
|
+
node.at_xpath("w:t").content
|
141
|
+
prev.remove
|
142
|
+
rescue
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
prev = node
|
148
|
+
end
|
149
|
+
|
150
|
+
# Write the tags file
|
151
|
+
tags_file.puts "---" + orig_docx
|
152
|
+
tags_file.puts "+++" + orig_docx
|
153
|
+
cleaner.xpath("//w:t").each_with_index do |node, index|
|
154
|
+
tags_file.puts "@@ %i @@" % [index, additional_info(node)]
|
155
|
+
tags_file.puts "-" + node.content
|
156
|
+
if attempting_to_translate
|
157
|
+
tags_file.puts "+" + Translator.translate_content(node.content)
|
158
|
+
else
|
159
|
+
tags_file.puts "+" + node.content
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
# Write the cleaned-up XML to a file for inspection
|
165
|
+
File.open(clean_path, "w") do |xml|
|
166
|
+
xml.puts cleaner.to_xml
|
167
|
+
end
|
168
|
+
else
|
169
|
+
puts I18n.t(:unknown) % sub_file
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
private
|
175
|
+
|
176
|
+
# Performs a comparison between two nodes and accepts them as equivalent
|
177
|
+
# if the differences are very minor
|
178
|
+
def compare_nodes(a, b) # :doc:
|
179
|
+
c = clean_hash(xml_node_to_hash(a))
|
180
|
+
d = clean_hash(xml_node_to_hash(b))
|
181
|
+
c == d
|
182
|
+
end
|
183
|
+
|
184
|
+
# Converts an XML node into a Ruby hash
|
185
|
+
def xml_node_to_hash(node) # :doc:
|
186
|
+
# If we are at the root of the document, start the hash
|
187
|
+
if node.element?
|
188
|
+
result_hash = {}
|
189
|
+
if node.attributes != {}
|
190
|
+
result_hash[:attributes] = {}
|
191
|
+
node.attributes.keys.each do |key|
|
192
|
+
result_hash[:attributes][node.attributes[key].name.to_sym] = prepare(node.attributes[key].value)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
if node.children.size > 0
|
196
|
+
node.children.each do |child|
|
197
|
+
result = xml_node_to_hash(child)
|
198
|
+
|
199
|
+
if child.name == "text"
|
200
|
+
unless child.next_sibling || child.previous_sibling
|
201
|
+
return prepare(result)
|
202
|
+
end
|
203
|
+
elsif result_hash[child.name.to_sym]
|
204
|
+
if result_hash[child.name.to_sym].is_a?(Array)
|
205
|
+
result_hash[child.name.to_sym] << prepare(result)
|
206
|
+
else
|
207
|
+
result_hash[child.name.to_sym] = [result_hash[child.name.to_sym]] << prepare(result)
|
208
|
+
end
|
209
|
+
else
|
210
|
+
result_hash[child.name.to_sym] = prepare(result)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
return result_hash
|
215
|
+
else
|
216
|
+
return result_hash
|
217
|
+
end
|
218
|
+
else
|
219
|
+
return prepare(node.content.to_s)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
# Prepares data according to whether it's string or integer content
|
224
|
+
def prepare(data) # :doc:
|
225
|
+
(data.class == String && data.to_i.to_s == data) ? data.to_i : data
|
226
|
+
end
|
227
|
+
|
228
|
+
# Delete extraneous attributes for comparison
|
229
|
+
def clean_hash(hash) # :doc:
|
230
|
+
delete_attribute_or_child hash, :t
|
231
|
+
delete_attribute_or_child hash, :rPr, :rFonts, :attributes, :hint
|
232
|
+
end
|
233
|
+
|
234
|
+
# Get additional information on the node for context in tags file
|
235
|
+
def additional_info(node) # :doc:
|
236
|
+
info = []
|
237
|
+
info << "hyperlink" if node.parent.parent.name == "hyperlink"
|
238
|
+
|
239
|
+
if info.empty?
|
240
|
+
""
|
241
|
+
else
|
242
|
+
" #=> #{info.join(", ")}"
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
# Deletes the specified attribute or child node for the supplied node,
|
247
|
+
# following the hierarchy provided
|
248
|
+
#
|
249
|
+
# Delete <tt>hash[:rPr][:rFonts][:attributes][:hint]</tt>:
|
250
|
+
# delete_attribute_or_child hash, :rPr, :rFonts, :attributes, :hint
|
251
|
+
def delete_attribute_or_child(node, *hierarchy) # :doc:
|
252
|
+
last_member = hierarchy.pop
|
253
|
+
|
254
|
+
hierarchy.each do |member|
|
255
|
+
node = node[member] unless node.nil?
|
256
|
+
end
|
257
|
+
|
258
|
+
node.delete last_member unless node.nil?
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
data/lib/konjac/version.rb
CHANGED
data/lib/locales/en.yml
CHANGED
@@ -11,6 +11,7 @@ en:
|
|
11
11
|
script_arg: dictionaries|vim
|
12
12
|
script_not_found: "Script not found: %s"
|
13
13
|
subcommand: subcommand
|
14
|
+
unimplemented_virtual: "Unimplemented virtual method: %s"
|
14
15
|
unknown_subcommand: "Unknown subcommand: %s"
|
15
16
|
usage: "Usage:"
|
16
17
|
where_options: "where [%s] are:"
|
data/lib/locales/ja.yml
CHANGED
@@ -0,0 +1,72 @@
|
|
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
|
data/spec/office_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe Office do
|
4
|
+
before :each do
|
5
|
+
@env = Office.environment
|
6
|
+
|
7
|
+
module Office::Mac
|
8
|
+
class Excel; def initialize; end; end
|
9
|
+
class PowerPoint; def initialize; end; end
|
10
|
+
class Word; def initialize; end; end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Office::Windows
|
14
|
+
class Excel; def initialize; end; end
|
15
|
+
class PowerPoint; def initialize; end; end
|
16
|
+
class Word; def initialize; end; end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "dynamic methods" do
|
21
|
+
it "should fail to detect something made-up" do
|
22
|
+
lambda { Office.something_made_up }.should raise_error NoMethodError
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should detect Excel" do
|
26
|
+
Office.excel.should be_an_instance_of @env::Excel
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should detect PowerPoint" do
|
30
|
+
Office.power_point.should be_an_instance_of @env::PowerPoint
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should detect Word" do
|
34
|
+
Office.word.should be_an_instance_of @env::Word
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
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.
|
4
|
+
version: '0.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-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: amatch
|
16
|
-
requirement: &
|
16
|
+
requirement: &70292199617680 !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: *70292199617680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: git
|
27
|
-
requirement: &
|
27
|
+
requirement: &70292199617240 !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: *70292199617240
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: highline
|
38
|
-
requirement: &
|
38
|
+
requirement: &70292199616720 !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: *70292199616720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: i18n
|
49
|
-
requirement: &
|
49
|
+
requirement: &70292199616220 !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: *70292199616220
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: nokogiri
|
60
|
-
requirement: &
|
60
|
+
requirement: &70292199615660 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,21 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70292199615660
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rb-appscript
|
71
|
+
requirement: &70292199614620 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70292199614620
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: sdoc
|
71
|
-
requirement: &
|
82
|
+
requirement: &70292199613940 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70292199613940
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: term-ansicolor
|
82
|
-
requirement: &
|
93
|
+
requirement: &70292199599480 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :runtime
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70292199599480
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: trollop
|
93
|
-
requirement: &
|
104
|
+
requirement: &70292199598700 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :runtime
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70292199598700
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: autotest
|
104
|
-
requirement: &
|
115
|
+
requirement: &70292199597260 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70292199597260
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: autotest-fsevent
|
115
|
-
requirement: &
|
126
|
+
requirement: &70292199596780 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70292199596780
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: autotest-growl
|
126
|
-
requirement: &
|
137
|
+
requirement: &70292199596360 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: '0'
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70292199596360
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: bundler
|
137
|
-
requirement: &
|
148
|
+
requirement: &70292199595740 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: '0'
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70292199595740
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: rspec
|
148
|
-
requirement: &
|
159
|
+
requirement: &70292199594940 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,7 +164,7 @@ dependencies:
|
|
153
164
|
version: '0'
|
154
165
|
type: :development
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *70292199594940
|
157
168
|
description: A Ruby command-line utility for translating files using a YAML wordlist
|
158
169
|
email:
|
159
170
|
- bryan.mckelvey@gmail.com
|
@@ -172,12 +183,6 @@ files:
|
|
172
183
|
- Rakefile
|
173
184
|
- bin/konjac
|
174
185
|
- konjac.gemspec
|
175
|
-
- lib/applescripts/konjac_excel_export
|
176
|
-
- lib/applescripts/konjac_excel_import
|
177
|
-
- lib/applescripts/konjac_powerpoint_export
|
178
|
-
- lib/applescripts/konjac_powerpoint_import
|
179
|
-
- lib/applescripts/konjac_word_export
|
180
|
-
- lib/applescripts/konjac_word_import
|
181
186
|
- lib/konjac.rb
|
182
187
|
- lib/konjac/cli.rb
|
183
188
|
- lib/konjac/config.rb
|
@@ -186,10 +191,22 @@ files:
|
|
186
191
|
- lib/konjac/installer.rb
|
187
192
|
- lib/konjac/language.rb
|
188
193
|
- lib/konjac/office.rb
|
189
|
-
- lib/konjac/
|
194
|
+
- lib/konjac/office/generic.rb
|
195
|
+
- lib/konjac/office/mac.rb
|
196
|
+
- lib/konjac/office/mac/excel.rb
|
197
|
+
- lib/konjac/office/mac/power_point.rb
|
198
|
+
- lib/konjac/office/mac/shared.rb
|
199
|
+
- lib/konjac/office/mac/word.rb
|
200
|
+
- lib/konjac/office/os.rb
|
201
|
+
- lib/konjac/office/tag.rb
|
202
|
+
- lib/konjac/office/windows.rb
|
203
|
+
- lib/konjac/office/windows/excel.rb
|
204
|
+
- lib/konjac/office/windows/power_point.rb
|
205
|
+
- lib/konjac/office/windows/shared.rb
|
206
|
+
- lib/konjac/office/windows/word.rb
|
207
|
+
- lib/konjac/office/xml.rb
|
208
|
+
- lib/konjac/office/xml/shared.rb
|
190
209
|
- lib/konjac/suggestor.rb
|
191
|
-
- lib/konjac/tag.rb
|
192
|
-
- lib/konjac/tag_manager.rb
|
193
210
|
- lib/konjac/translator.rb
|
194
211
|
- lib/konjac/utils.rb
|
195
212
|
- lib/konjac/version.rb
|
@@ -199,8 +216,9 @@ files:
|
|
199
216
|
- spec/config_spec.rb
|
200
217
|
- spec/dictionary_spec.rb
|
201
218
|
- spec/language_spec.rb
|
219
|
+
- spec/office/generic_spec.rb
|
220
|
+
- spec/office_spec.rb
|
202
221
|
- spec/spec_helper.rb
|
203
|
-
- spec/tag_spec.rb
|
204
222
|
- spec/utils_spec.rb
|
205
223
|
homepage: http://brymck.herokuapp.com/
|
206
224
|
licenses: []
|
@@ -231,6 +249,7 @@ test_files:
|
|
231
249
|
- spec/config_spec.rb
|
232
250
|
- spec/dictionary_spec.rb
|
233
251
|
- spec/language_spec.rb
|
252
|
+
- spec/office/generic_spec.rb
|
253
|
+
- spec/office_spec.rb
|
234
254
|
- spec/spec_helper.rb
|
235
|
-
- spec/tag_spec.rb
|
236
255
|
- spec/utils_spec.rb
|