hobix 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/bin/hobix +90 -0
  3. data/lib/hobix/api.rb +91 -0
  4. data/lib/hobix/article.rb +22 -0
  5. data/lib/hobix/base.rb +477 -0
  6. data/lib/hobix/bixwik.rb +200 -0
  7. data/lib/hobix/commandline.rb +661 -0
  8. data/lib/hobix/comments.rb +99 -0
  9. data/lib/hobix/config.rb +39 -0
  10. data/lib/hobix/datamarsh.rb +110 -0
  11. data/lib/hobix/entry.rb +83 -0
  12. data/lib/hobix/facets/comments.rb +74 -0
  13. data/lib/hobix/facets/publisher.rb +314 -0
  14. data/lib/hobix/facets/trackbacks.rb +80 -0
  15. data/lib/hobix/linklist.rb +76 -0
  16. data/lib/hobix/out/atom.rb +92 -0
  17. data/lib/hobix/out/erb.rb +64 -0
  18. data/lib/hobix/out/okaynews.rb +55 -0
  19. data/lib/hobix/out/quick.rb +312 -0
  20. data/lib/hobix/out/rdf.rb +97 -0
  21. data/lib/hobix/out/redrum.rb +26 -0
  22. data/lib/hobix/out/rss.rb +115 -0
  23. data/lib/hobix/plugin/bloglines.rb +73 -0
  24. data/lib/hobix/plugin/calendar.rb +220 -0
  25. data/lib/hobix/plugin/flickr.rb +110 -0
  26. data/lib/hobix/plugin/recent_comments.rb +82 -0
  27. data/lib/hobix/plugin/sections.rb +91 -0
  28. data/lib/hobix/plugin/tags.rb +60 -0
  29. data/lib/hobix/publish/ping.rb +53 -0
  30. data/lib/hobix/publish/replicate.rb +283 -0
  31. data/lib/hobix/publisher.rb +18 -0
  32. data/lib/hobix/search/dictionary.rb +141 -0
  33. data/lib/hobix/search/porter_stemmer.rb +203 -0
  34. data/lib/hobix/search/simple.rb +209 -0
  35. data/lib/hobix/search/vector.rb +100 -0
  36. data/lib/hobix/storage/filesys.rb +398 -0
  37. data/lib/hobix/trackbacks.rb +94 -0
  38. data/lib/hobix/util/objedit.rb +193 -0
  39. data/lib/hobix/util/patcher.rb +155 -0
  40. data/lib/hobix/webapp/cli.rb +195 -0
  41. data/lib/hobix/webapp/htmlform.rb +107 -0
  42. data/lib/hobix/webapp/message.rb +177 -0
  43. data/lib/hobix/webapp/urigen.rb +141 -0
  44. data/lib/hobix/webapp/webrick-servlet.rb +90 -0
  45. data/lib/hobix/webapp.rb +723 -0
  46. data/lib/hobix/weblog.rb +860 -0
  47. data/lib/hobix.rb +223 -0
  48. metadata +87 -0
data/lib/hobix.rb ADDED
@@ -0,0 +1,223 @@
1
+ #
2
+ # = hobix.rb
3
+ #
4
+ # Hobix command-line weblog system.
5
+ #
6
+ # Copyright (c) 2003-2004 why the lucky stiff
7
+ #
8
+ # Written & maintained by why the lucky stiff <why@ruby-lang.org>
9
+ #
10
+ # This program is free software, released under a BSD license.
11
+ # See COPYING for details.
12
+ #
13
+ #--
14
+ # $Id$
15
+ #++
16
+ require 'hobix/config'
17
+ require 'hobix/weblog'
18
+
19
+ # = Hobix
20
+ #
21
+ # Hobix is a complete blogging system, designed to be managed
22
+ # on the file system and accessed through a command-line application.
23
+ #
24
+ # The command-line application is powered by this Ruby library
25
+ # which is designed to be fully scriptable and extensible.
26
+ #
27
+ # = Module Map
28
+ #
29
+ # Here is a map of the core modules which are loaded when you
30
+ # require 'hobix' in your script.
31
+ #
32
+ # Hobix::Weblog:: Generally, this module is the starting point.
33
+ # Load a weblog's configuration into a Hobix::Weblog
34
+ # object, which can be used to query entries,
35
+ # generate pages, and edit any part of the site.
36
+ # (from 'hobix/weblog')
37
+ #
38
+ # Hobix::Page:: Whenever a template is generated into output,
39
+ # a Page object is passed in, describing the
40
+ # links to neighboring pages and update time.
41
+ # (from 'hobix/weblog')
42
+ #
43
+ # Hobix::Entry:: Using an entry's id (or shortName), you can
44
+ # load Entry objects, which contain all the
45
+ # content and rendering details for an entry.
46
+ # (from 'hobix/entry')
47
+ #
48
+ # Hobix::EntryEnum:: When Hobix supplies a template with a list of
49
+ # entry classes, this module is mixed in.
50
+ # (from 'hobix/entry')
51
+ #
52
+ # Hobix::LinkList:: An Entry subclass, used for storing links.
53
+ # (from 'hobix/linklist')
54
+ #
55
+ # Hobix::BasePlugin:: All Hobix plugins inherit from this class.
56
+ # The class uses Ruby's +inherited+ hook to
57
+ # identify plugins.
58
+ # (from 'hobix/base')
59
+ #
60
+ # Hobix::BaseStorage:: All storage plugins inherit from this class.
61
+ # Storage plugins exclusively store the weblog entries.
62
+ # (from 'hobix/base')
63
+ #
64
+ # Hobix::BaseOutput:: All output plugins inherit from this class.
65
+ # Output plugins are attached to specific template
66
+ # types and they feed entries into the template.
67
+ # (from 'hobix/base')
68
+ #
69
+ # Hobix::BasePublish:: All publisher plugins inherit from this class.
70
+ # Publisher plugins are notified when certain
71
+ # pages are updated. For example, the +ping+
72
+ # plugin will ping blog directories if the `index'
73
+ # pages are updated.
74
+ # (from 'hobix/base')
75
+ #
76
+ # Hobix::Config:: Users individually store their personal settings
77
+ # and weblog paths in .hobixrc. This class
78
+ # is used to load and manipulate the settings file.
79
+ # (from 'hobix/config')
80
+ #
81
+ # Hobix comes with a few plugins, for which documentation is also
82
+ # available.
83
+ #
84
+ # Hobix::Storage::Filesys:: This plugin stores entries in separate YAML
85
+ # files. Directories can be used to categorize
86
+ # and organize entries.
87
+ # (from 'hobix/storage/filesys')
88
+ #
89
+ # Hobix::Out::ERB:: This output plugin handles .erb templates.
90
+ # Page and entry data are passed in as variables.
91
+ # ERuby markup is used in the document to script
92
+ # against those variables.
93
+ # (from 'hobix/out/erb')
94
+ #
95
+ # Hobix::Out::RedRum:: This output plugin handles .redrum templates.
96
+ # These templates contain ERuby as well. The output
97
+ # generated by the page is passed through RedCloth,
98
+ # a Textile processor. This way, you can write
99
+ # your templates in Textile with ERuby scripting.
100
+ # (from 'hobix/out/redrum')
101
+ #
102
+ # Hobix::Out::RSS:: This output plugin handles .rss templates.
103
+ # These templates are empty and simply signify to
104
+ # the plugin that an RSS 2.0 feed should be generated
105
+ # for the entry data.
106
+ # (from 'hobix/out/rss')
107
+ #
108
+ # Hobix::Out::Atom:: This output plugin handles .atom templates.
109
+ # Just like the RSS plugin, but generates an Atom feed.
110
+ # (from 'hobix/out/atom')
111
+ #
112
+ # Hobix::Out::OkayNews:: This output plugin handles .okaynews templates.
113
+ # Just like the Atom and RSS plugins, but generates
114
+ # !okay/news, a YAML syndication feed.
115
+ # (from 'hobix/out/okaynews')
116
+ #
117
+ # Hobix::Publish::Ping:: This publisher plugin pings blog directories when the
118
+ # 'index' pages are published on a regen or upgen.
119
+ #
120
+ # = Examples
121
+ #
122
+ # Here are a few short examples to give you a feel for how Hobix can be
123
+ # scripted. Refer to individual module's documentation for more.
124
+ #
125
+ # == Example 1: Regenerating a weblog
126
+ #
127
+ # The first step is to load the Weblog object.
128
+ #
129
+ # require 'hobix'
130
+ # weblog = Hobix::Weblog.load( '/my/blahhg/hobix.yaml' )
131
+ #
132
+ # With the weblog loaded, we'll now want to load a template.
133
+ # Templates are stored in the weblog's +skel_path+ accessor.
134
+ #
135
+ # tpl_path = File.join( weblog.skel_path, 'index.html.erb' )
136
+ #
137
+ # We give the path to the editor. When we are done editing,
138
+ # the editor saves to the original path. We can then trigger
139
+ # a rebuild.
140
+ #
141
+ # weblog.regenerate :update
142
+ #
143
+ # The :update indicates that not every file will be regenerated,
144
+ # only those affected by the change.
145
+ #
146
+ # == Example 2: E-mail notify on publish
147
+ #
148
+ # Publisher plugins are used to perform actions when the site
149
+ # has an upgen or regen. Hobix plugins are absolutely the simplest
150
+ # Ruby coding ever. Watch.
151
+ #
152
+ # require 'net/smtp'
153
+ #
154
+ # module Hobix::Publish
155
+ # class Email < Hobix::BasePublish
156
+ # def initialize( weblog, emails ); end
157
+ # def watch; ['entry']; end
158
+ # def publish( page_name ); end
159
+ # end
160
+ # end
161
+ #
162
+ # This plugin doesn't do anything yet. But it won't throw any errors.
163
+ # This is our skeleton for a plugin that will e-mail us when there are
164
+ # updates to the site.
165
+ #
166
+ # The +watch+ method monitors certain page prefixes. The `entry' prefix
167
+ # indicates that this publish plugin looks for changes to any entry on
168
+ # the site.
169
+ #
170
+ # The +initialize+ method is important as well. It receives the
171
+ # +Hobix::Weblog+ object the publishing took place on. The _emails_
172
+ # parameter is supplied a list of e-mail address from the weblog's
173
+ # hobix.yaml configuration.
174
+ #
175
+ # When a plugin is initialized it is given the weblog object and
176
+ # any data which is supplied in the weblog configuration. Here is
177
+ # what the hobix.yaml looks like:
178
+ #
179
+ # requires:
180
+ # - hobix/storage/filesys
181
+ # - hobix/out/erb
182
+ # - hobix/publish/ping: [http://ping.blo.gs:80/]
183
+ #
184
+ # In the above configuration, an Array is passed to the Ping plugin.
185
+ # So that's what we'll receive here.
186
+ #
187
+ # To get our e-mail sending, let's fill in the +initialize+ and
188
+ # +publish+ methods.
189
+ #
190
+ # def initialize( weblog, emails )
191
+ # @weblog = weblog
192
+ # @emails = emails
193
+ # end
194
+ # def publish( page_name )
195
+ # Net::SMTP.start( 'localhost', 25 ) do |smtp|
196
+ # @emails.each do |email|
197
+ # smtp.send_message <<MSG, 'your@site.com', email
198
+ # From: your@site.com
199
+ # To: #{ email }
200
+ #
201
+ # The site has been updated.
202
+ # MSG
203
+ # end
204
+ # end
205
+ # end
206
+ #
207
+ module Hobix
208
+ ## Version used to compare installations
209
+ VERSION = '0.4'
210
+ ## CVS information
211
+ CVS_ID = "$Id$"
212
+ CVS_REV = "$Revision$"[11..-3]
213
+ ## Share directory contains external data files
214
+ SHARE_PATH = "/usr/share/hobix/"
215
+
216
+ ## Get a top-level constant from a string
217
+ def self.const_find( tclass )
218
+ obj_class = Object
219
+ tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) }
220
+ obj_class
221
+ end
222
+ end
223
+
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hobix
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.4'
5
+ platform: ruby
6
+ authors:
7
+ - Why the Lucky Stiff
8
+ autorequire: hobix
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: why@ruby-lang.org
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - bin/hobix
20
+ - lib/hobix.rb
21
+ - lib/hobix/api.rb
22
+ - lib/hobix/article.rb
23
+ - lib/hobix/base.rb
24
+ - lib/hobix/bixwik.rb
25
+ - lib/hobix/commandline.rb
26
+ - lib/hobix/comments.rb
27
+ - lib/hobix/config.rb
28
+ - lib/hobix/datamarsh.rb
29
+ - lib/hobix/entry.rb
30
+ - lib/hobix/facets/comments.rb
31
+ - lib/hobix/facets/publisher.rb
32
+ - lib/hobix/facets/trackbacks.rb
33
+ - lib/hobix/linklist.rb
34
+ - lib/hobix/out/atom.rb
35
+ - lib/hobix/out/erb.rb
36
+ - lib/hobix/out/okaynews.rb
37
+ - lib/hobix/out/quick.rb
38
+ - lib/hobix/out/rdf.rb
39
+ - lib/hobix/out/redrum.rb
40
+ - lib/hobix/out/rss.rb
41
+ - lib/hobix/plugin/bloglines.rb
42
+ - lib/hobix/plugin/calendar.rb
43
+ - lib/hobix/plugin/flickr.rb
44
+ - lib/hobix/plugin/recent_comments.rb
45
+ - lib/hobix/plugin/sections.rb
46
+ - lib/hobix/plugin/tags.rb
47
+ - lib/hobix/publish/ping.rb
48
+ - lib/hobix/publish/replicate.rb
49
+ - lib/hobix/publisher.rb
50
+ - lib/hobix/search/dictionary.rb
51
+ - lib/hobix/search/porter_stemmer.rb
52
+ - lib/hobix/search/simple.rb
53
+ - lib/hobix/search/vector.rb
54
+ - lib/hobix/storage/filesys.rb
55
+ - lib/hobix/trackbacks.rb
56
+ - lib/hobix/util/objedit.rb
57
+ - lib/hobix/util/patcher.rb
58
+ - lib/hobix/webapp.rb
59
+ - lib/hobix/webapp/cli.rb
60
+ - lib/hobix/webapp/htmlform.rb
61
+ - lib/hobix/webapp/message.rb
62
+ - lib/hobix/webapp/urigen.rb
63
+ - lib/hobix/webapp/webrick-servlet.rb
64
+ - lib/hobix/weblog.rb
65
+ homepage: http://hobix.com/
66
+ licenses: []
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubygems_version: 3.0.3.1
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Hobix
87
+ test_files: []