File: news.rb

package info (click to toggle)
yecht 1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, buster
  • size: 1,108 kB
  • sloc: java: 5,217; ruby: 3,595; yacc: 349; xml: 233; makefile: 10
file content (69 lines) | stat: -rw-r--r-- 1,448 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#
# The !okay/news module for YAML.rb
# 
require 'okay'

module Okay
 
  class News < ModuleBase
    attr_accessor :title, :link, :description, :updatePeriod, :items
    def to_yaml_properties
      [ '@title', '@link', '@description', '@updatePeriod', '@items' ]
    end
    def to_yaml_type
      "!okay/news"
    end
  end

  Okay.add_type( "news" ) { |type, val, modules|
    Okay.object_maker( Okay::News, val, modules )
  }

  class NewsItem < ModuleBase
    attr_accessor :title, :link, :description, :pubTime
    def to_yaml_properties
      [ '@title', '@link', '@description', '@pubTime' ]
    end
    def to_yaml_type
      "!okay/news/item"
    end
  end

  Okay.add_type( "news/item" ) { |type, val, modules|
    Okay.object_maker( Okay::NewsItem, val, modules )
  }

end

Okay.load_schema( <<EOY )

# Schema for Okay::News types
--- %YAML:1.0 !okay/schema
okay/news: 
  description: >
    Inspired by RSS, more limited...
  examples: >
    If I had a news site... 
  schema:  
    - map: 
        /title: [ str ]
        /link: [ str ]
        /description: [ str ]  
        /updatePeriod: [ str ] 
        /items: 
          - seq: { /*: [ okay/news/item ] }

okay/news/item: 
  description: >
    Inside okay/news lies... 
  examples: > 
    See okay/news examples...
  schema:  
    - map: 
        /title: [ str ] 
        /pubTime: [ time ]
        /link: [ str ]
        /description: [ str ]
        optional: [ /title ]

EOY