konjac 0.0.5 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/konjac.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- # specify any dependencies here; for example:
21
+ s.add_runtime_dependency "nokogiri"
22
22
  s.add_development_dependency "bundler"
23
23
  s.add_development_dependency "rspec"
24
24
  s.add_development_dependency "sdoc"
data/lib/konjac/cli.rb CHANGED
@@ -8,6 +8,10 @@ module Konjac
8
8
  case ARGV.shift
9
9
  when "translate"
10
10
  translate
11
+ when "extract", "export"
12
+ Word.extract_docx_tags(ARGV)
13
+ when "import"
14
+ Word.import_docx_tags(ARGV)
11
15
  when "add"
12
16
  when "help"
13
17
  show_help
data/lib/konjac/utils.rb CHANGED
@@ -11,7 +11,7 @@ module Konjac
11
11
  match[1]
12
12
  end
13
13
  end
14
-
14
+
15
15
  # Build converted file name by appending "_converted" to the file name
16
16
  def build_converted_file_name(source, from_lang, to_lang)
17
17
  # Get components of filename
@@ -1,3 +1,3 @@
1
1
  module Konjac
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1"
3
3
  end
@@ -0,0 +1,71 @@
1
+ module Konjac
2
+ module Word
3
+ class << self
4
+ # Extracts the text content from a Microsoft Word 2003+ Document
5
+ def import_docx_tags(files)
6
+ files.each do |file|
7
+ sub_files = Dir.glob(File.expand_path(file))
8
+ sub_files.each do |sub_file|
9
+ # Build the list of paths we need to work with
10
+ dirname = File.dirname(sub_file)
11
+ basename = File.basename(sub_file, ".*")
12
+ new_path = "#{dirname}/#{basename}_imported.docx"
13
+ xml_path = "#{dirname}/#{basename}.xml"
14
+ tags_path = "#{dirname}/#{basename}.tags"
15
+ out_path = "#{dirname}/word/document.xml"
16
+
17
+ # Open the original XML file and the updated tags
18
+ writer = Nokogiri::XML(File.read(xml_path))
19
+ tags = File.readlines(tags_path)
20
+
21
+ # Overwrite each <w:t> tag's content with the new tag
22
+ writer.xpath("//w:t").each do |node|
23
+ node.content = tags.shift.tr("\n", "")
24
+ end
25
+
26
+ # Create a directory for word/document.xml if necessary
27
+ FileUtils.mkdir "#{dirname}/word" unless File.directory?("#{dirname}/word")
28
+
29
+ # Write the modified XML to a file
30
+ File.open(out_path, "w") do |file|
31
+ file.write writer.to_xml.gsub(/\n\s*/, "").sub(/\?></, "?>\n<")
32
+ end
33
+
34
+ # Copy the original file
35
+ FileUtils.cp sub_file, new_path
36
+
37
+ # Add the new document XML to the copied file
38
+ system "cd #{dirname} && zip -q #{new_path} word/document.xml"
39
+ end
40
+ end
41
+ end
42
+
43
+ # Extracts the text content from a Microsoft Word 2003+ Document
44
+ def extract_docx_tags(files)
45
+ files.each do |file|
46
+ sub_files = Dir.glob(File.expand_path(file))
47
+ sub_files.each do |sub_file|
48
+ # Build a list of all the paths we're working with
49
+ dirname = File.dirname(sub_file)
50
+ basename = File.basename(sub_file, ".*")
51
+ xml_path = "#{dirname}/#{basename}.xml"
52
+ tags_path = "#{dirname}/#{basename}.tags"
53
+
54
+ # Unzip the DOCX's word/document.xml file and pipe the output into
55
+ # an XML with the same base name as the DOCX
56
+ system "unzip -p #{sub_file} word/document.xml > #{xml_path}"
57
+
58
+ # Read in the XML file and extract the content from each <w:t> tag
59
+ reader = Nokogiri::XML(File.read(xml_path))
60
+ File.open(tags_path, "w") do |tags_file|
61
+ reader.xpath("//w:t").each do |node|
62
+ tags_file.puts node.content
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ # lol
data/lib/konjac.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "konjac/version"
2
2
  require "konjac/exception"
3
3
  autoload :FileUtils, "fileutils"
4
+ autoload :Nokogiri, "nokogiri"
4
5
 
5
6
  module Konjac
6
7
  # Set up autoload for all modules
@@ -9,4 +10,5 @@ module Konjac
9
10
  autoload :Language, "konjac/language"
10
11
  autoload :Translator, "konjac/translator"
11
12
  autoload :Utils, "konjac/utils"
13
+ autoload :Word, "konjac/word"
12
14
  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.0.5
4
+ version: '0.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,9 +11,20 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &70261374910800 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70261374910800
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: bundler
16
- requirement: &70364018145820 !ruby/object:Gem::Requirement
27
+ requirement: &70261374908420 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ! '>='
@@ -21,10 +32,10 @@ dependencies:
21
32
  version: '0'
22
33
  type: :development
23
34
  prerelease: false
24
- version_requirements: *70364018145820
35
+ version_requirements: *70261374908420
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: rspec
27
- requirement: &70364018145360 !ruby/object:Gem::Requirement
38
+ requirement: &70261374907000 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *70364018145360
46
+ version_requirements: *70261374907000
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: sdoc
38
- requirement: &70364018144900 !ruby/object:Gem::Requirement
49
+ requirement: &70261374906120 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70364018144900
57
+ version_requirements: *70261374906120
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: autotest
49
- requirement: &70364018144480 !ruby/object:Gem::Requirement
60
+ requirement: &70261374905300 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70364018144480
68
+ version_requirements: *70261374905300
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: autotest-fsevent
60
- requirement: &70364018144020 !ruby/object:Gem::Requirement
71
+ requirement: &70261374904580 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70364018144020
79
+ version_requirements: *70261374904580
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: autotest-growl
71
- requirement: &70364018143580 !ruby/object:Gem::Requirement
82
+ requirement: &70261374903400 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,7 +87,7 @@ dependencies:
76
87
  version: '0'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70364018143580
90
+ version_requirements: *70261374903400
80
91
  description: A Ruby command-line utility for translating files using a YAML wordlist
81
92
  email:
82
93
  - bryan.mckelvey@gmail.com
@@ -102,6 +113,7 @@ files:
102
113
  - lib/konjac/translator.rb
103
114
  - lib/konjac/utils.rb
104
115
  - lib/konjac/version.rb
116
+ - lib/konjac/word.rb
105
117
  - spec/cli_spec.rb
106
118
  - spec/dictionary_spec.rb
107
119
  - spec/language_spec.rb