docx 0.6.0 → 0.6.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.
- checksums.yaml +4 -4
- data/README.md +31 -2
- data/lib/docx/document.rb +12 -6
- data/lib/docx/version.rb +3 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a33dcd9e31c60144261a15670cd1c01b37877044aaf33f7091b46cc85ab3412
|
|
4
|
+
data.tar.gz: 1911db027b3e2fbf8eb9363eaa99b95231f875afe8de2a0c060b38fee86c7238
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0a823fedf1b0bfc542c88533c787aefa5e9cee12ae4422a01f106985a2f03e8b636aa70820a179f5501ba8f996672f8f75e24356282cd7d81505cbb1984fa967
|
|
7
|
+
data.tar.gz: c06b4078536bd8b12b5c5e4f61fe0ef5f2f9e03e9cbc7c4017f2d01d3e8a0bc9200fa7457fac54c0b110a57ddc4bff8ad74c28d3e873512900266ac00137c6e6
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# docx
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/docx)
|
|
4
|
-
[](https://github.com/ruby-docx/docx/actions?query=workflow%3ARuby)
|
|
5
5
|
[](https://coveralls.io/github/ruby-docx/docx?branch=master)
|
|
6
6
|
[](https://gitter.im/ruby-docx/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ A ruby library/gem for interacting with `.docx` files. currently capabilities in
|
|
|
11
11
|
|
|
12
12
|
### Prerequisites
|
|
13
13
|
|
|
14
|
-
- Ruby 2.
|
|
14
|
+
- Ruby 2.5 or later
|
|
15
15
|
|
|
16
16
|
### Install
|
|
17
17
|
|
|
@@ -134,6 +134,35 @@ end
|
|
|
134
134
|
doc.save('example-edited.docx')
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
### Writing to tables
|
|
138
|
+
|
|
139
|
+
``` ruby
|
|
140
|
+
require 'docx'
|
|
141
|
+
|
|
142
|
+
# Create a Docx::Document object for our existing docx file
|
|
143
|
+
doc = Docx::Document.open('tables.docx')
|
|
144
|
+
|
|
145
|
+
# Iterate over each table
|
|
146
|
+
doc.tables.each do |table|
|
|
147
|
+
last_row = table.rows.last
|
|
148
|
+
|
|
149
|
+
# Copy last row and insert a new one before last row
|
|
150
|
+
new_row = last_row.copy
|
|
151
|
+
new_row.insert_before(last_row)
|
|
152
|
+
|
|
153
|
+
# Substitute text in each cell of this new row
|
|
154
|
+
new_row.cells.each do |cell|
|
|
155
|
+
cell.paragraphs.each do |paragraph|
|
|
156
|
+
paragraph.each_text_run do |text|
|
|
157
|
+
text.substitute('_placeholder_', 'replacement value')
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
doc.save('tables-edited.docx')
|
|
164
|
+
```
|
|
165
|
+
|
|
137
166
|
### Advanced
|
|
138
167
|
|
|
139
168
|
``` ruby
|
data/lib/docx/document.rb
CHANGED
|
@@ -30,8 +30,7 @@ module Docx
|
|
|
30
30
|
@zip = Zip::File.open_buffer(path_or_io)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
document = @zip.
|
|
34
|
-
document ||= @zip.find_entry('word/document2.xml')
|
|
33
|
+
document = @zip.glob('word/document*.xml').first
|
|
35
34
|
raise Errno::ENOENT if document.nil?
|
|
36
35
|
|
|
37
36
|
@document_xml = document.get_input_stream.read
|
|
@@ -88,12 +87,12 @@ module Docx
|
|
|
88
87
|
def hyperlinks
|
|
89
88
|
hyperlink_relationships.each_with_object({}) do |rel, hash|
|
|
90
89
|
hash[rel.attributes['Id'].value] = rel.attributes['Target'].value
|
|
91
|
-
end
|
|
90
|
+
end
|
|
92
91
|
end
|
|
93
92
|
|
|
94
93
|
def hyperlink_relationships
|
|
95
94
|
@rels.xpath("//xmlns:Relationship[contains(@Type,'hyperlink')]")
|
|
96
|
-
end
|
|
95
|
+
end
|
|
97
96
|
|
|
98
97
|
##
|
|
99
98
|
# *Deprecated*
|
|
@@ -169,13 +168,20 @@ module Docx
|
|
|
169
168
|
def load_styles
|
|
170
169
|
@styles_xml = @zip.read('word/styles.xml')
|
|
171
170
|
@styles = Nokogiri::XML(@styles_xml)
|
|
172
|
-
|
|
173
|
-
@rels = Nokogiri::XML(@rels_xml)
|
|
171
|
+
load_rels
|
|
174
172
|
rescue Errno::ENOENT => e
|
|
175
173
|
warn e.message
|
|
176
174
|
nil
|
|
177
175
|
end
|
|
178
176
|
|
|
177
|
+
def load_rels
|
|
178
|
+
rels_entry = @zip.glob('word/_rels/document*.xml.rels').first
|
|
179
|
+
raise Errno::ENOENT unless rels_entry
|
|
180
|
+
|
|
181
|
+
@rels_xml = rels_entry.get_input_stream.read
|
|
182
|
+
@rels = Nokogiri::XML(@rels_xml)
|
|
183
|
+
end
|
|
184
|
+
|
|
179
185
|
#--
|
|
180
186
|
# TODO: Flesh this out to be compatible with other files
|
|
181
187
|
# TODO: Method to set flag on files that have been edited, probably by inserting something at the
|
data/lib/docx/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christopher Hunt
|
|
@@ -12,7 +12,7 @@ authors:
|
|
|
12
12
|
autorequire:
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date:
|
|
15
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
18
|
name: nokogiri
|
|
@@ -49,19 +49,19 @@ dependencies:
|
|
|
49
49
|
- !ruby/object:Gem::Version
|
|
50
50
|
version: '2.0'
|
|
51
51
|
- !ruby/object:Gem::Dependency
|
|
52
|
-
name:
|
|
52
|
+
name: coveralls_reborn
|
|
53
53
|
requirement: !ruby/object:Gem::Requirement
|
|
54
54
|
requirements:
|
|
55
55
|
- - "~>"
|
|
56
56
|
- !ruby/object:Gem::Version
|
|
57
|
-
version: '0.
|
|
57
|
+
version: '0.21'
|
|
58
58
|
type: :development
|
|
59
59
|
prerelease: false
|
|
60
60
|
version_requirements: !ruby/object:Gem::Requirement
|
|
61
61
|
requirements:
|
|
62
62
|
- - "~>"
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: '0.
|
|
64
|
+
version: '0.21'
|
|
65
65
|
- !ruby/object:Gem::Dependency
|
|
66
66
|
name: rake
|
|
67
67
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
135
135
|
- !ruby/object:Gem::Version
|
|
136
136
|
version: '0'
|
|
137
137
|
requirements: []
|
|
138
|
-
rubygems_version: 3.1.
|
|
138
|
+
rubygems_version: 3.1.6
|
|
139
139
|
signing_key:
|
|
140
140
|
specification_version: 4
|
|
141
141
|
summary: a ruby library/gem for interacting with .docx files
|