wordpress-wxr 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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