Graphiclious 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/README.txt +126 -0
  2. data/Rakefile +28 -0
  3. data/bin/graphiclious +3 -0
  4. data/doc/cloud.jpg +0 -0
  5. data/doc/index.html +32 -0
  6. data/doc/screenshots/default.css +44 -0
  7. data/doc/screenshots/original/blue-style-1.html +37 -0
  8. data/doc/screenshots/original/blue-style-1.jpg +0 -0
  9. data/doc/screenshots/original/cornflower.html +37 -0
  10. data/doc/screenshots/original/cornflower.jpg +0 -0
  11. data/doc/screenshots/original/custom-style.html +37 -0
  12. data/doc/screenshots/original/custom-style.jpg +0 -0
  13. data/doc/screenshots/original/sample-graph.html +37 -0
  14. data/doc/screenshots/original/sample-graph.jpg +0 -0
  15. data/doc/screenshots/original/user-interface.html +37 -0
  16. data/doc/screenshots/original/user-interface.jpg +0 -0
  17. data/doc/screenshots/thumb.html +46 -0
  18. data/doc/screenshots/thumb/t_blue-style-1.jpg +0 -0
  19. data/doc/screenshots/thumb/t_cornflower.jpg +0 -0
  20. data/doc/screenshots/thumb/t_custom-style.jpg +0 -0
  21. data/doc/screenshots/thumb/t_sample-graph.jpg +0 -0
  22. data/doc/screenshots/thumb/t_user-interface.jpg +0 -0
  23. data/doc/style.css +60 -0
  24. data/gemspec.rb +45 -0
  25. data/lib/graphiclious.rb +78 -0
  26. data/lib/graphiclious/delicious2yaml.rb +235 -0
  27. data/lib/graphiclious/dot_attributes.rb +35 -0
  28. data/lib/graphiclious/environment.rb +36 -0
  29. data/lib/graphiclious/gui.rb +260 -0
  30. data/lib/graphiclious/help.rb +22 -0
  31. data/lib/graphiclious/require_fox.rb +12 -0
  32. data/lib/graphiclious/url_graph.rb +135 -0
  33. data/lib/graphiclious/utf8.rb +19 -0
  34. data/lib/graphiclious/version.rb +8 -0
  35. data/lib/graphiclious/yaml-links2html.rb +476 -0
  36. data/options.yaml +7 -0
  37. data/styles/blue-style-1/dot-attributes.yaml +21 -0
  38. data/styles/blue-style-1/extern.gif +0 -0
  39. data/styles/blue-style-1/style.css +128 -0
  40. data/styles/cornflower/cornflower.png +0 -0
  41. data/styles/cornflower/dot-attributes.yaml +21 -0
  42. data/styles/cornflower/extern.gif +0 -0
  43. data/styles/cornflower/h3.gif +0 -0
  44. data/styles/cornflower/menuitem.png +0 -0
  45. data/styles/cornflower/menuselected.png +0 -0
  46. data/styles/cornflower/style.css +149 -0
  47. data/styles/cornflower/tr-edge.png +0 -0
  48. data/test/test_delicious2yaml.rb +97 -0
  49. data/wickie +249 -0
  50. metadata +119 -0
data/options.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ "--user": wickie
3
+ "--password": flaflafla
4
+ "--gui": true
5
+ "--bundles": true
6
+ "--delicious": true
7
+ "--noupdate": true
@@ -0,0 +1,21 @@
1
+ --- !ruby/object:DotAttributes
2
+ edge_attributes: {}
3
+ graph_attributes:
4
+ name: UrlGraph
5
+ ranksep: "0.2"
6
+ labelloc: top
7
+ bgcolor: lightslateblue
8
+ orientation: portrait
9
+ rankdir: LR
10
+ label: tag relation graph
11
+ nodesep: "0.1"
12
+ node_attributes:
13
+ fillcolor: white
14
+ fontcolor: blue
15
+ fontname: Arial
16
+ fontsize: "10"
17
+ shape: ellipse
18
+ color: orange
19
+ height: "0.2"
20
+ width: "1"
21
+ style: filled
Binary file
@@ -0,0 +1,128 @@
1
+ /**
2
+ #6666CC => dunkel
3
+ #9999FF => pastell
4
+ #CCCCFF => hell
5
+ */
6
+
7
+ /** Basic paragraph styles
8
+ */
9
+ body {
10
+ color:#FFFFFF;
11
+ background-color:#6666CC;
12
+ border-width:medium;
13
+ border-top-color:#FFFFFF;
14
+ border-bottom-color:#000000;
15
+ border-left-color:#FFFFFF;
16
+ border-right-color:#000000;
17
+ }
18
+ div.main {
19
+ vertical-align:top;
20
+ color:#000000;
21
+ background-color:#CCCCFF;
22
+ margin:0px;
23
+ padding:1em;
24
+ }
25
+ img {
26
+ border-style:none;
27
+ }
28
+ ul {
29
+ list-style-type:circle;
30
+ }
31
+ /* Basic link style
32
+ */
33
+ a:link {
34
+ color:black;
35
+ text-decoration:underline;
36
+ }
37
+ a:visited {
38
+ color:#555555;
39
+ text-decoration:underline;
40
+ }
41
+ a:hover {
42
+ color:black;
43
+ text-decoration:underline;
44
+ }
45
+ a:active {
46
+ color:black;
47
+ text-decoration:none;
48
+ }
49
+
50
+ .extern {
51
+ background: transparent url(extern.gif) no-repeat top left;
52
+ padding-left:12px;
53
+ }
54
+
55
+ /** Menu styles
56
+ */
57
+
58
+ .mainmenu {
59
+ display:inline-table;
60
+ }
61
+ .menuitem {
62
+ display:inline;
63
+ background-color:#CCCCFF;
64
+ border-style:solid;
65
+ border-left-style:none;
66
+ border-bottom-style:none;
67
+ padding:2px;
68
+ }
69
+ .menuitem a:link {
70
+ color:black;
71
+ text-decoration:none;
72
+ font-weight:bold;
73
+ }
74
+ .menuitem a:visited {
75
+ color:black;
76
+ text-decoration:none;
77
+ font-weight:bold;
78
+ }
79
+ .menuitem a:active {
80
+ color:white;
81
+ text-decoration:none;
82
+ font-weight:bold;
83
+ }
84
+ .menuitem a:hover {
85
+ color:black;
86
+ text-decoration:none;
87
+ font-weight:bold;
88
+ }
89
+ .menuselected {
90
+ display:inline;
91
+ color:#FFFFFF;
92
+ background-color:#6666CC;
93
+ border-style:solid;
94
+ padding:2px;
95
+ }
96
+
97
+ /* Tag-clouds
98
+ */
99
+ .cloud-1{
100
+ font-size:0.8em
101
+ }
102
+ .cloud-2{
103
+ font-size:0.9em
104
+ }
105
+ .cloud-3{
106
+ font-size:1.0em
107
+ }
108
+ .cloud-4{
109
+ font-size:1.1em
110
+ }
111
+ .cloud-5{
112
+ font-size:1.2em
113
+ }
114
+ .cloud-6{
115
+ font-size:1.3em
116
+ }
117
+ .cloud-7{
118
+ font-size:1.4em
119
+ }
120
+ .cloud-8{
121
+ font-size:1.5em
122
+ }
123
+ .cloud-9{
124
+ font-size:1.6em
125
+ }
126
+ .cloud-10{
127
+ font-size:1.7em
128
+ }
Binary file
@@ -0,0 +1,21 @@
1
+ --- !ruby/object:DotAttributes
2
+ edge_attributes: {}
3
+ graph_attributes:
4
+ name: UrlGraph
5
+ ranksep: "0.2"
6
+ labelloc: top
7
+ bgcolor: cornflowerblue
8
+ orientation: portrait
9
+ rankdir: LR
10
+ label: tag relation graph
11
+ nodesep: "0.1"
12
+ node_attributes:
13
+ fillcolor: white
14
+ fontcolor: blue
15
+ fontname: Arial
16
+ fontsize: "10"
17
+ shape: ellipse
18
+ color: orange
19
+ height: "0.2"
20
+ width: "1"
21
+ style: filled
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,149 @@
1
+ /**
2
+ cornflowerblue ~ #6495ED => dunkel RGB 100/49/237
3
+ #9999FF => pastell
4
+ #CCCCFF => hell => RGB 204/204/255
5
+ */
6
+
7
+ /** Basic paragraph styles
8
+ */
9
+ body {
10
+ color:#FFFFFF;
11
+ background-color:cornflowerblue;
12
+ border-width:medium;
13
+ border-top-color:#FFFFFF;
14
+ border-bottom-color:#000000;
15
+ border-left-color:#FFFFFF;
16
+ border-right-color:#000000;
17
+ }
18
+ div.main {
19
+ position:absolute;
20
+ top:80px;
21
+ left:20px;
22
+ width:70%;
23
+ height:100%;
24
+ vertical-align:top;
25
+ color:#000000;
26
+ background-color:#CCCCFF;
27
+ background-image:url(tr-edge.png);
28
+ background-position:top right;
29
+ background-repeat:no-repeat;
30
+ margin:0px;
31
+ margin-left:2em;
32
+ padding:1em;
33
+ padding-left:136px;
34
+ }
35
+ img {
36
+ border-style:none;
37
+ }
38
+ /* Basic link style
39
+ */
40
+ a:link {
41
+ color:black;
42
+ text-decoration:underline;
43
+ }
44
+ a:visited {
45
+ color:#555555;
46
+ text-decoration:underline;
47
+ }
48
+ a:hover {
49
+ color:black;
50
+ text-decoration:underline;
51
+ }
52
+ a:active {
53
+ color:black;
54
+ text-decoration:none;
55
+ }
56
+
57
+ .extern {
58
+ background: transparent url(extern.gif) no-repeat top left;
59
+ padding-left:12px;
60
+ }
61
+
62
+ /** Menu styles
63
+ */
64
+
65
+ .mainmenu {
66
+ z-index:2;
67
+ position:absolute;
68
+ top:80px;
69
+ left:10px;
70
+ vertical-align:middle;
71
+ text-align:center;
72
+ font-size:18px;
73
+ width:166px;
74
+ padding:0px;
75
+ }
76
+
77
+ .menuitem {
78
+ position:relative;
79
+ background: transparent url(menuitem.png) no-repeat center center;
80
+ border-style:none;
81
+ height:28px;
82
+ }
83
+ .menuitem a:link {
84
+ color:black;
85
+ text-decoration:none;
86
+ font-weight:bold;
87
+ }
88
+ .menuitem a:visited {
89
+ color:black;
90
+ text-decoration:none;
91
+ font-weight:bold;
92
+ }
93
+ .menuitem a:active {
94
+ color:white;
95
+ text-decoration:none;
96
+ font-weight:bold;
97
+ }
98
+ .menuitem a:hover {
99
+ color:black;
100
+ text-decoration:none;
101
+ font-weight:bold;
102
+ }
103
+ .menuselected {
104
+ color:#FFFFFF;
105
+ position:relative;
106
+ background: transparent url(menuselected.png) no-repeat center center;
107
+ border-style:none;
108
+ height:28px;
109
+ }
110
+
111
+ h3 {
112
+ background: transparent url(h3.gif) no-repeat top left;
113
+ padding-left: 50px;
114
+ min-height:40px;
115
+ font-size:30px;
116
+ }
117
+
118
+ /* Tag-clouds
119
+ */
120
+ .cloud-1{
121
+ font-size:0.8em
122
+ }
123
+ .cloud-2{
124
+ font-size:0.9em
125
+ }
126
+ .cloud-3{
127
+ font-size:1.0em
128
+ }
129
+ .cloud-4{
130
+ font-size:1.1em
131
+ }
132
+ .cloud-5{
133
+ font-size:1.2em
134
+ }
135
+ .cloud-6{
136
+ font-size:1.3em
137
+ }
138
+ .cloud-7{
139
+ font-size:1.4em
140
+ }
141
+ .cloud-8{
142
+ font-size:1.5em
143
+ }
144
+ .cloud-9{
145
+ font-size:1.6em
146
+ }
147
+ .cloud-10{
148
+ font-size:1.7em
149
+ }
Binary file
@@ -0,0 +1,97 @@
1
+ require 'test/unit'
2
+ require 'graphiclious/delicious2yaml'
3
+
4
+ class RubiliciousMock
5
+ attr_accessor(:links, :time, :bundles)
6
+ def initialize
7
+ @links = Hash.new
8
+ @bundles = Hash.new
9
+ @time = Time.now
10
+ end
11
+
12
+ def all
13
+ @links
14
+ end
15
+
16
+ def recent
17
+ @links
18
+ end
19
+
20
+ def update
21
+ @time
22
+ end
23
+ end
24
+
25
+ class Delicious2YamlWithMock < Delicious2Yaml
26
+ attr_accessor(:interface, :test_cache)
27
+ def create_interface
28
+ @interface = RubiliciousMock.new
29
+ end
30
+
31
+ def update
32
+ @test_cache = Hash.new
33
+ super
34
+ end
35
+
36
+ def store_links(cache)
37
+ @test_cache = cache
38
+ super(cache)
39
+ end
40
+ end
41
+
42
+ class TestDelicious2Yaml < Test::Unit::TestCase
43
+ def setup
44
+ @user = 'dummy_user'
45
+ @importer = Delicious2YamlWithMock.new(@user, 'dummy_password')
46
+ @link = {
47
+ 'href'=>'http://www.xxx.com/',
48
+ 'time'=>'2006-04-01 23:42:13 +01:00',
49
+ 'hash'=>'123456789',
50
+ 'tags'=>['tag1', 'tag2', 'tag3'],
51
+ 'description'=>'This is a test link'
52
+ }
53
+ @bundles = { 'bundle1' => ['tag2' 'tag3'] }
54
+ end
55
+
56
+ def teardown
57
+ [timestamp_file, import_file, bundle_file].each do
58
+ |file|
59
+ File.delete(file) if File.exists?(file)
60
+ end
61
+ [@user].each do
62
+ |dir|
63
+ Dir.delete(dir) if File.exists?(dir)
64
+ end
65
+ end
66
+
67
+ def test_basic_function
68
+ disable_time_check
69
+ timestamp_file = File.join(@user, 'delicious.time')
70
+ if(File.exists?(timestamp_file))
71
+ File.delete(timestamp_file)
72
+ end
73
+ @importer.interface.links = [@link]
74
+ @importer.update
75
+ assert(File.exists?(timestamp_file))
76
+ assert(File.exists?(import_file))
77
+ assert(@importer.test_cache.keys.size == 1)
78
+ end
79
+
80
+ def timestamp_file
81
+ File.join(@user, 'delicious.time')
82
+ end
83
+
84
+ def import_file
85
+ File.join(@user, 'delicious.yaml')
86
+ end
87
+
88
+ def bundle_file
89
+ File.join(@user, 'bundles.yaml')
90
+ end
91
+
92
+ def disable_time_check
93
+ if(File.exists?(timestamp_file))
94
+ File.delete(timestamp_file)
95
+ end
96
+ end
97
+ end