Class: FrenchPress::Post
- Inherits:
-
Object
show all
- Defined in:
- lib/frenchpress/post.rb,
lib/frenchpress/post/code.rb,
lib/frenchpress/post/link.rb,
lib/frenchpress/post/image.rb,
lib/frenchpress/post/generic.rb,
lib/frenchpress/post/spotify.rb,
lib/frenchpress/post/youtube.rb,
lib/frenchpress/post/markdown.rb
Overview
This represents a post in a FrenchPress blog
Defined Under Namespace
Classes: Code, Generic, Image, Link, Markdown, Spotify, Youtube
Class Method Summary
collapse
Class Method Details
.generate_reply(original_url, *args) ⇒ Object
49
50
51
52
53
|
# File 'lib/frenchpress/post.rb', line 49
def self.generate_reply(original_url, *args)
original = get_post_from_url original_url
reply = new_post_from_multiple(*args) new_post_from_multiple original.render_as_quote, reply.render
end
|
.get_post_from_url(url_string) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/frenchpress/post.rb', line 83
def self.get_post_from_url(url_string)
url_string = url_string.gsub('http://', '').gsub('https://', '')
url_string = url_string.prepend('https://') post_uri = URI.parse(url_string)
post_uri.path = post_uri.path.split('/').pop.prepend('/raw/')
dl = nil
begin
dl = post_uri.open.read.dup rescue
begin
url_string = url_string.gsub 'https://', 'http://'
post_uri = URI.parse url_string
post_uri.path = post_uri.path.split('/').pop.prepend('/raw/')
dl = post_uri.open.read.dup
rescue StandardError => e
puts "Woah! I can't grab the original post. Check your internet."
puts e
exit 1
end
end
post = FrenchPress::Post.new_post dl
post.parent_blog = {
url: url_string,
host: post_uri.host
}
post
end
|
.new_post_from_multiple(*args) ⇒ Object
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/frenchpress/post.rb', line 38
def self.new_post_from_multiple(*args)
return new_post(args[0]) if args.length == 1
args.map!(&method(:new_post)) args.map!(&:render)
FrenchPress::Post::Generic.new args.join("\n\n")
end
|
.parse_file(f) ⇒ Object
113
114
115
116
117
118
|
# File 'lib/frenchpress/post.rb', line 113
def self.parse_file(f)
file = File.open f
r = file.read
file.close
[r, f.split('.').pop]
end
|
.parse_type(item) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/frenchpress/post.rb', line 55
def self.parse_type(item)
if item =~ /\A#{URI.regexp(%w(http https))}\z/
if item.include?('open.spotify.com')
return 'spotify'
elsif item.include?('youtube.com')
return 'youtube'
else
return 'link'
end
elsif File.exist?(item)
filetype = item.split('.').pop
if %w(md markdown).include?(filetype)
return 'file-markdown'
elsif %w(rb py c go cpp rs swift js yml).include?(filetype)
return 'file-code'
elsif %w(png jpg).include?(filetype)
return "file-image-#{filetype}"
else
return 'file-text'
end
else
return 'text'
end
end
|