infod 0.0.3.2 → 0.0.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,23 +0,0 @@
1
- class E
2
-
3
- def HEAD
4
- self.GET.do{|s,h,b|[s,h,[]]}
5
- end
6
-
7
- def OPTIONS
8
- [200,{},[]]
9
- end
10
-
11
- # HEAD response-codes on a (.u) list of URIs
12
- def checkURIs
13
- r = uris.map{|u|
14
- c = [`curl -IsA 404? "#{u}"`.lines.to_a[0].match(/\d{3}/)[0].to_i,u] # HEAD
15
- puts c.join ' '
16
- c } # status, uri tuple
17
- puts "\n\n"
18
- r.map{|c|
19
- # show anomalies
20
- puts c.join(' ') unless c[0] == 200 }
21
- end
22
-
23
- end
@@ -1,19 +0,0 @@
1
- #watch __FILE__
2
- class E
3
-
4
- fn 'set/find',->e,q,m,x=''{
5
- q['q'].do{|q|
6
- r = '-iregex ' + ('.*' + q + '.*' + x).sh
7
- s = q['size'].do{|s| s.match(/^\d+$/) && '-size +' + s + 'M'} || ""
8
- t = q['day'].do{|d| d.match(/^\d+$/) && '-ctime -' + d } || ""
9
- [e,e.pathSegment].compact.select(&:e).map{|e|
10
- `find #{e.sh} #{t} #{s} #{r} | head -n 1000`.
11
- lines.map{|l|l.chomp.unpathFs}}.compact.flatten}}
12
-
13
- fn 'view/find',->i,e{
14
- {_: :form, method: :GET, action: e['REQUEST_PATH'].t,
15
- c: [{_: :input, name: :set, value: :find, type: :hidden},
16
- {_: :input, name: :view, value: :ls, type: :hidden},
17
- {_: :input, name: :q, style: 'float: left;font-size:1.3em'}]}}
18
-
19
- end
@@ -1,25 +0,0 @@
1
- #watch __FILE__
2
- class E
3
-
4
- def glob p=""
5
- (Pathname.glob d + p).map &:E
6
- end
7
-
8
- fn 'set/glob',->d,e=nil,_=nil{
9
- p = [d,d.pathSegment].compact.map(&:glob).flatten[0..4e2].compact.partition &:inside
10
- p[0] }
11
-
12
- fn 'req/randomFile',->e,r{
13
- g = F['set/glob'][e]
14
- !g.empty? ? [302, {Location: g[rand g.length].uri}, []] : [404]}
15
-
16
- def docs
17
- base = docBase
18
- [(base if pathSegment!='/' && base.e), # doc-base
19
- (self if base != self && e && uri[-1]!='/'), # requested path
20
- base.glob(".{e,html,n3,nt,owl,rdf,ttl,txt}"), # docs
21
- ((d? && uri[-1]=='/' && uri.size>1) ? c : []) # trailing slash -> child resources
22
- ].flatten.compact
23
- end
24
-
25
- end
@@ -1,56 +0,0 @@
1
- #watch __FILE__
2
- class E
3
-
4
- def []= p,o
5
- self[p,o]
6
- end
7
-
8
- def [] p,o=nil, v=nil
9
- if o # set
10
- editFs p,o,v
11
- else # get
12
- (concatURI p).properties
13
- end
14
- end
15
-
16
- def editFs p, o, oO=nil
17
- p = p.E
18
- o = p.literal o unless o.class == E
19
- t = (concatURI p).concatURI o
20
- if oO # updated triple
21
- if t.e # old triple exists?
22
- t.deleteNode # remove triple
23
- indexEdit p,o,'' # unindex
24
- end # add
25
- self[p,oO] unless oO.class==String && oO.empty? # 3rd arg is new value, empty-string -> nil
26
- else
27
- unless t.e # triple exists?
28
- indexEdit p,o,nil # index triple
29
- if o.f # add triple
30
- o.ln t # hard link
31
- elsif o.e
32
- o.ln_s t # symbolic link
33
- else
34
- t.mk # dir entry
35
- end
36
- end
37
- end
38
- end
39
-
40
- def triplrDoc &f
41
- docBase.glob('#*').map{|s| s.triplrResource &f}
42
- end
43
-
44
- def triplrResource
45
- properties.map{|p|self[p].map{|o| yield uri, p.uri, o}}
46
- end
47
-
48
- def deletePredicate p
49
- self[p].each{|o|self[p,o,'']}
50
- end
51
-
52
- def properties
53
- subtree.map &:ro
54
- end
55
-
56
- end
@@ -1,19 +0,0 @@
1
- #watch __FILE__
2
- class E
3
-
4
- fn 'view/'+HTTP+'Response',->d,e{
5
- u = d['#']
6
-
7
- [u[Prev].do{|p|
8
- {_: :a, rel: :prev, href: p.uri, c: '←',
9
- style: 'color:#fff;background-color:#eee;font-size:2.3em;float:left;clear:both;margin-right:.3em'}},
10
- u[Next].do{|n|
11
- {_: :a, rel: :next, href: n.uri, c: '→',
12
- style: 'color:#fff;background-color:#eee;font-size:2.3em;float:right;clear:both;border-radius:0'}},
13
-
14
- {_: :a, href: e['REQUEST_PATH'].sub(/\.html$/,'') + e.q.merge({'view'=>'data'}).qs, # data browser
15
- c: {_: :img, src: '/css/misc/cube.png', style: 'height:2em;background-color:white;padding:.54em;border-radius:1em;margin:.2em'}},
16
- (H.js '/js/pager'),(H.once e,:mu,(H.js '/js/mu')) # (n)ext (p)rev key mappings
17
- ]}
18
-
19
- end
@@ -1,26 +0,0 @@
1
- #watch __FILE__
2
- class E
3
-
4
- def triplrPS
5
- p = E[dirname + '/.' + File.basename(path) + '/']
6
- unless p.e # && p.m > m
7
- p.mk
8
- `gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile='#{p.sh}%03d.png' -dTextAlphaBits=4 #{sh}`
9
- end
10
- yield uri, Content, `ps2txt #{sh}`.hrefs
11
- p.a('*.png').glob.map{|i|
12
- yield uri, DC+'Image', i }
13
- end
14
-
15
- F['view/'+MIMEtype+'application/postscript']=->r,e{
16
- [(H.once e, :mu, (H.js '/js/mu')),(H.once e, :book, (H.js '/js/book')),
17
- {_: :style, c: 'div[type="book"] a {background-color:#ccc;color:#fff;float:left;margin:.16em}'},
18
- r.values.map{|d|
19
- d[DC+'Image'].do{|is|
20
- is = is.sort_by(&:uri)
21
- {type: :book,
22
- c: [{_: :img, style:'float:left;max-width:100%', src: is[0].url},
23
- {name: :pages,
24
- c: is.map{|i|{_: :a,href: i.url, c: i.E.bare}}}]}}}]}
25
-
26
- end
@@ -1,57 +0,0 @@
1
- class Array
2
- def head; self[0] end
3
- def tail; self[1..-1] end
4
- def h; join.h end
5
- def intersperse i
6
- inject([]){|a,b|a << b << i}[0..-2]
7
- end
8
- def cr; intersperse "\n" end
9
- end
10
-
11
- class FalseClass
12
- def do; false end
13
- end
14
-
15
- class Fixnum
16
- def max i; i > self ? self : i end
17
- def min i; i < self ? self : i end
18
- end
19
-
20
- class Float
21
- def max i; i > self ? self : i end
22
- def min i; i < self ? self : i end
23
- end
24
-
25
- class Hash
26
- def except *ks
27
- clone.do{|h|
28
- ks.map{|k|h.delete k}
29
- h}
30
- end
31
- def has_keys ks; ks.each{|k|
32
- return false unless has_key? k
33
- }; true
34
- end
35
- def has_any_key ks; ks.each{|k|
36
- return true if has_key? k
37
- }; false
38
- end
39
- end
40
-
41
- class NilClass
42
- def do; nil end
43
- def html e=nil,g=nil; "" end
44
- end
45
-
46
- class Object
47
- def id; self end
48
- def do; yield self end
49
- def maybeURI; nil end
50
- end
51
-
52
- class String
53
- def h; Digest::SHA1.hexdigest self end
54
- def tail; self[1..-1] end
55
- def to_utf8; encode('UTF-8', undef: :replace) end
56
- def t; match(/\/$/) ? self : self+'/' end
57
- end
@@ -1,19 +0,0 @@
1
- class E
2
-
3
- # util, URI prefix, cleaner -> tripleStream
4
- def triplrStdOut e,f='/',g=/^\s*(.*?)\s*$/,a=sh
5
-
6
- `#{e} #{a}|grep :`.each_line{|i|
7
-
8
- i = i.split /:/
9
-
10
- yield uri, (f + (i[0].match(g)||[0,i[0]])[1]. # s
11
- gsub(/\s/,'_').gsub(/\//,'-').gsub(/[\(\)]+/,'')), # p
12
- i.tail.join(':').strip.do{|v|v.match(/^[0-9\.]+$/) ? v.to_f : v.hrefs} # o
13
- }
14
- nil
15
- rescue
16
- nil
17
- end
18
-
19
- end
File without changes
@@ -1,18 +0,0 @@
1
- class E
2
-
3
- def triplrMarkdown
4
- require 'markdown'
5
- yield uri,Content,Markdown.new(r).to_html
6
- end
7
-
8
- def triplrOrg
9
- require 'org-ruby'
10
- r.do{|r|
11
- yield uri,Content,Orgmode::Parser.new(r).to_html}
12
- end
13
-
14
- def triplrTextile; require 'redcloth'
15
- yield uri,Content,RedCloth.new(r).to_html
16
- end
17
-
18
- end