wordpress-wxr 0.2.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc4416bd5b5fd2eea1613d0669d1c5fa8a37430b
4
- data.tar.gz: f3d386df08c984cd4df09503cb4f4198c7680c7f
3
+ metadata.gz: 39fb32a9a5dc0807f09ab1ecc70675e2c14f5347
4
+ data.tar.gz: 52775664ca45caa9ed25277d2d87b1d6871ecdb4
5
5
  SHA512:
6
- metadata.gz: 64a72132b70b56e963fbd3bfaabc076967f7f1d20b979a8c3cc3ce8718fc3dea9b4cbf4e6ac28806125b606569c6e2868b8418eac711282a5700ddd4a3d27dae
7
- data.tar.gz: 5082ed52781fc10753e6b395711c9338d88d9f0cf682785f4ca3f6d326795e690b33621bb9f4df537c58a6b5da7d7bef4fa89c26a3f27d73182054e6f339a158
6
+ metadata.gz: 830e02fb518a56caa2c0fcc8a43ea27b66c8f2659a29c0829720ea702aa1178a6fd05178339eb03e4ab55aee1c4db57a560a7529bde91338d0337a39cc3ce48b
7
+ data.tar.gz: c655f2ba6a9db861a611e22b0a5135003ad96ee2d02c90b83f99e3f081df346e5e0d86e3c1b4996a2acbf121984c1928e819be055f7200283d5973b8eef7c60e
@@ -1,11 +1,28 @@
1
1
  require 'wordpress/wxr/item'
2
+ require 'cgi'
2
3
  require 'uri'
3
4
 
4
5
  module Wordpress
5
6
  class WXR
6
7
  class Attachment < Item
8
+ # Internal: Add methods to normalize potential utf-8 encodings into
9
+ # standard ASCII escaping to feed into URI which dies on utf-8 characters.
10
+ module Refinements
11
+ refine String do
12
+ def replace_spaces_with_hex_encoding
13
+ gsub(/\s/, '%20')
14
+ end
15
+
16
+ def percent_encode_non_ascii
17
+ encode(Encoding.find('ASCII'), invalid: :replace, fallback: ->(char) { CGI.escape(char) })
18
+ end
19
+ end
20
+ end
21
+
22
+ using Refinements
23
+
7
24
  def url
8
- URI(node.xpath('wp:attachment_url').text)
25
+ URI(String(node.xpath('wp:attachment_url').text).replace_spaces_with_hex_encoding.percent_encode_non_ascii)
9
26
  end
10
27
  end
11
28
  end
@@ -81,6 +81,10 @@ module Wordpress
81
81
  end
82
82
  end
83
83
 
84
+ def attachments
85
+ wxr.attachments.select { |attachment| attachment.parent_id == id }
86
+ end
87
+
84
88
  def pages
85
89
  wxr.pages.select { |page| page.parent_id == id }
86
90
  end
@@ -89,6 +93,12 @@ module Wordpress
89
93
  Integer(node.xpath('wp:post_parent').text)
90
94
  end
91
95
 
96
+ def meta
97
+ node.xpath('wp:postmeta').each_with_object({}) { |meta, hash|
98
+ hash[meta.xpath('wp:meta_key').text] = meta.xpath('wp:meta_value').text
99
+ }
100
+ end
101
+
92
102
  # def comments
93
103
  # node.xpath('wp:comment').map do |comment_node|
94
104
  # Comment.new(comment_node)
@@ -1,5 +1,5 @@
1
1
  module Wordpress
2
2
  class WXR
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordpress-wxr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ePublishing, inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-16 00:00:00.000000000 Z
11
+ date: 2017-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler