ztrening 0.0.3 → 0.0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/History.txt +5 -0
  2. data/bin/zt +36 -32
  3. data/lib/ztrening.rb +67 -11
  4. data/test/test_ztrening.rb +3 -0
  5. metadata +5 -4
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.0.4.1 2010-08-05
2
+ * specs
3
+ * download with net/http
4
+ * minor fixes
5
+
1
6
  === 0.0.3 2010-06-30
2
7
 
3
8
  * fixed open
data/bin/zt CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
- # Copyright (c) 2010. All rights reserved.
3
+
4
+ # TODO: prebaciti ovo lib, nova klasa - eval 'CLI.exec ARGV'
4
5
 
5
6
  require 'rubygems'
6
7
  require File.expand_path(File.dirname(__FILE__) + "/../lib/ztrening")
@@ -11,6 +12,7 @@ USAGE = <<EOS
11
12
  usage: zt.rb [refresh, list, find, open]
12
13
  find [string]
13
14
  open [filename] => file mora imati '// zt [ime zadatka]' na 1. liniji
15
+ todo [add, del[ete]/rem[ove]]
14
16
  -h, --help
15
17
  EOS
16
18
 
@@ -23,11 +25,12 @@ if !ARGV[0] || ARGV[0]=='-h' || ARGV[0]=='--help'
23
25
  end
24
26
 
25
27
 
26
- if ARGV[0] == 'refresh'
28
+ if ARGV[0] == '-v' || ARGV[0] == '--version'
29
+ puts "Version: #{ZtreningM::VERSION}"
30
+ elsif %w(refresh download).include? ARGV[0]
27
31
  z = Ztrening.new :web
28
32
  puts 'New list downloaded'
29
33
  elsif ARGV[0] == 'open' && ARGV[1]
30
- # TODO: maknuti gore const file regex
31
34
  z = Ztrening.new
32
35
 
33
36
  if File.exists? ARGV[1]
@@ -64,45 +67,22 @@ elsif ARGV[0] == 'open' && ARGV[1]
64
67
  end
65
68
 
66
69
  if z.lista.nil? or z.lista.empty?
67
- hh = if ime.nil?; "im ID-om" else "im imenom" end
68
- puts "Nema zadataka s takv#{hh}"
70
+ hh = ime.nil? ? "ID-om" : "imenom"
71
+ puts "Nema zadataka s takvim #{hh}!"
69
72
  end
70
73
 
71
- hh = if ime.nil?; "ID" else "ime" end
74
+ hh = ime.nil? ? "ID" : "ime"
72
75
  puts "Oznaka zadatka iz datoteke: #{str} (#{hh})"
73
76
 
74
77
  puts "cnt: #{z.lista.count}"
75
- # if z.lista.count > 1
76
- # puts "Postoji vise zadataka koji sadrze '#{ime}';"
77
- # puts "Odaberi jedan:"
78
- # limit, ok = 10, 1
79
- # if z.lista.count > limit
80
- # puts "Broj nadjenih zadataka prelazi limit (#{limit}) !"
81
- # exit
82
- # end
83
- # z.lista.each_with_index { |l,idx| printf "%4s: %s\n", idx+1, l[1] }
84
- # while ok > 0
85
- # print " > "; STDOUT.flush
86
- # id = STDIN.gets.chomp.to_i
87
- # if id.nil? or id == '' or !id.is_a?(Integer)
88
- # puts " ?? err 1"
89
- # end
90
- # # id -= 1
91
- # if !(1..(z.lista.count)).include?(id)
92
- # puts "izvan rangea!"; ok=1
93
- # else ok=0 end
94
- # end
95
- # puts "Otvaram zadatak: #{z.lista[id.to_i-1][1]}"
96
- # z.open id-1
97
- # else
98
- # z.open :name => ime | :id => id
78
+
99
79
  z.open id
100
80
  end
101
81
  elsif ARGV[0] == 'find'
102
- if ARGV[1]
82
+ if ARGV[1..ARGC-1]
103
83
  z = Ztrening.new
104
84
  #z.find ARGV[1..32].join ' '
105
- if ARGV[1].grep '.'
85
+ if ARGV[1][/.+/]
106
86
  z.find ARGV[1]
107
87
  z.lista_txt
108
88
  else
@@ -115,6 +95,30 @@ elsif ARGV[0] == 'find'
115
95
  elsif ARGV[0] == 'list'
116
96
  z = Ztrening.new
117
97
  z.lista_txt
98
+ # elsif ARGV[0] == 'todo'
99
+ # if %w[show list ls].include? ARGV[1]
100
+ # elsif %w[add].include? ARGV[1]
101
+ # elsif %w[del rem delete remove].include? ARGV[1]
102
+ # end
103
+ # TODO: zt set ZADATAK STATUS
104
+ # elsif ARGV[0] == 'set'
105
+ # if ARGV[1]
106
+ # z = Ztrening.new
107
+ # # set ID/NAME STATUS
108
+ # z.set ARGV[1], ARGV[2]
109
+ # else
110
+ # puts USAGE
111
+ # exit
112
+ # end
113
+ elsif ARGV[0] == 'init'
114
+ (puts USAGE; exit) if !ARGV[1].nil? # TODO: manual dir as arg1
115
+ z = Ztrening.new
116
+ if !z.in_zaddir?
117
+ z.create_zaddir `pwd`.chop
118
+ else
119
+ puts "Vec postoji zaddir conf file u ovom dir-u"
120
+ exit
121
+ end
118
122
  else
119
123
  puts USAGE
120
124
  exit
data/lib/ztrening.rb CHANGED
@@ -1,18 +1,22 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+ require 'net/http'
3
4
 
4
5
  class Array
5
6
  def moj_keys() Hash[*self.collect { |v| [v, true] }.flatten] end
6
7
  end
7
8
 
8
9
  module ZtreningM
9
- VERSION = '0.0.3'
10
+ VERSION = '0.0.4.1'
10
11
 
11
12
  class Ztrening
12
13
  def initialize(*opts)
13
- @list_fname = 'lista.txt'
14
- @cmd_dwl = "wget -q http://z-trening.com/training.php\?all_tasks\=1 -O #{@list_fname}"
15
- @link_base = 'http://z-trening.com/tasks.php?show_task=_ID_'
14
+ @list_fname = 'ztlista.txt'
15
+ # @cmd_dwl = "wget -q http://z-trening.com/training.php\?all_tasks\=1 -O #{@list_fname}"
16
+ @dwl_link = "z-trening.com|/training.php\?all_tasks\=1"
17
+ @link_base = 'http://z-trening.com/tasks.php?show_task=_ID_'
18
+ @ztdir_fname = '.ztconf' # bolje ztdata; file sa conf vars
19
+ @todo_fname = '_PROJDIR_/todo.txt'
16
20
 
17
21
  @lista ||= []
18
22
  @opts = opts.moj_keys
@@ -22,7 +26,7 @@ module ZtreningM
22
26
  if !@opts[:web].nil?
23
27
  web
24
28
  execout = exec
25
- (puts execerrmsg; exit) if execout.nil? || execout.empty?
29
+ (puts execerrmsg; exit) if (execout.nil? || execout.empty?)
26
30
  @lista = parse(execout)
27
31
  else
28
32
  if !File.exists? @list_fname
@@ -33,6 +37,7 @@ module ZtreningM
33
37
  (puts execerrmsg; exit) if execout.nil? || execout.empty?
34
38
  @lista = parse(execout)
35
39
  end
40
+ @lista.sort!
36
41
  end
37
42
 
38
43
  def find(str)
@@ -49,7 +54,7 @@ module ZtreningM
49
54
  ll=[]
50
55
  @lista.each { |e| ll << e if e[1] == str }
51
56
  @lista = ll
52
- puts "find_by_name lista cnt: #{@lista.count}"
57
+ # puts "find_by_name lista cnt: #{@lista.count}"
53
58
  end
54
59
 
55
60
  def find_by_id(id)
@@ -77,10 +82,6 @@ module ZtreningM
77
82
  @lista
78
83
  end
79
84
 
80
- # def lista=(l)
81
- # @lista=l
82
- # end
83
-
84
85
  def lista_txt
85
86
  puts 'Zadatci:'
86
87
  @lista.each { |l| puts "Zadatak: #{l[1]}" }
@@ -99,6 +100,53 @@ module ZtreningM
99
100
  puts '</ul>' if opts[:li]
100
101
  end
101
102
 
103
+
104
+ # get_zaddir
105
+ def findzaddir
106
+ # nadji DirName s datotekom '.ztprojdir', prema gore
107
+ # false ako nema
108
+
109
+ for n in (0..32)
110
+ p = ('../'*n)
111
+ return File.expand_path(p) if File.file?("#{p}#{@ztdir_fname}")
112
+ return false if File.expand_path p == "/"
113
+ end
114
+
115
+ end
116
+
117
+ def create_zaddir(dir) #(args) - koristi hash i symbole
118
+ # TODO: args: string dirname='', bool templates, ...
119
+ if File.directory? dir
120
+ File.open("#{File.dirname dir}/@ztdir_fname", "w"){ |f|
121
+ f.write(<<EOS)
122
+ todo_file = todo.txt
123
+ status_file = status.txt
124
+ EOS
125
+ }
126
+ FileUtils.touch "#{File.dirname dir}/todo.txt"
127
+ FileUtils.touch "#{File.dirname dir}/status.txt"
128
+ puts "Napravljen ztdir u dir-u #{dir}"
129
+ else
130
+ puts "Dir #{dir} ne postoji, ne mogu napraviti zaddir!"
131
+ return false
132
+ end
133
+ end
134
+
135
+ def in_zaddir?
136
+ (@ztdir_fname && File.exists?("./#{@ztdir_fname}")) || false
137
+ end
138
+
139
+ def set(arg)
140
+ if arg.start_with? '500000'
141
+ id = arg
142
+ else
143
+ find_by_name arg
144
+ id = @lista[0][0]
145
+ end
146
+ # TODO: set()
147
+ end
148
+
149
+
102
150
  private
103
151
 
104
152
  def link(id)
@@ -106,6 +154,7 @@ module ZtreningM
106
154
  end
107
155
 
108
156
  def exec
157
+ # FIXME: open(@list_fname).read > stdin od thread-a
109
158
  t = Thread.new { `#{cmd}` }
110
159
  return t.value.split "\r\n"
111
160
  end
@@ -118,7 +167,14 @@ module ZtreningM
118
167
 
119
168
  def web
120
169
  puts 'Downloading list ...'
121
- %x[#{@cmd_dwl}]
170
+ # %x[#{@cmd_dwl}]
171
+ link = @dwl_link.split '|'
172
+ Net::HTTP.start(link[0]) { |http|
173
+ resp = http.get(link[1])
174
+ File.open(@list_fname, "wb") { |file|
175
+ file.write(resp.body)
176
+ }
177
+ }
122
178
  end
123
179
 
124
180
  def cmd
@@ -8,4 +8,7 @@ class TestZtrening < Test::Unit::TestCase
8
8
  def test_truth
9
9
  assert true
10
10
  end
11
+
12
+
13
+
11
14
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ztrening
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 93
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ - 1
11
+ version: 0.0.4.1
11
12
  platform: ruby
12
13
  authors:
13
14
  - BKrsta
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-06-30 00:00:00 +02:00
19
+ date: 2010-08-06 00:00:00 +02:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency