source: ruby/trunk/bin/adl_validator.rb@ 42

Last change on this file since 42 was 42, checked in by KOBAYASHI, Shinji, 16 years ago

change hiearachy

  • Property svn:executable set to *
File size: 2.3 KB
Line 
1#!/usr/bin/env ruby
2#$:.unshift File.join(File.dirname(__FILE__))
3require "lib/shell.rb"
4require 'readline'
5require 'optparse'
6#require 'open-uri'
7require 'net/http'
8
9module OpenEHR
10 module CommandLine
11 class Arguments < Hash
12 def initialize(args)
13 super() # default values
14 opts = ::OptionParser.new do |opts|
15 opts.banner = "Usage: #$0 [file|http://location.to.adl]* [options]"
16 opts.on('-v', '--verbose', 'display verbose message(Not Implemented Yet)') do
17 self[:verbose] = true
18 end
19 opts.on_tail('-h', '--help', 'display this help') do
20 puts opts
21 exit
22 end
23 end
24 opts.parse!(args)
25 end
26 end
27
28 class ADLValidator
29 def initialize(arguments)
30 @debug = false
31 @adl_validator = ::OpenEHR::Application::ADLValidator.new(::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new))
32 end
33
34 def run
35 while argv = ARGV.shift
36 begin
37 input = nil
38 name = nil
39 case argv
40 when /\A(http:\/\/.*)/
41 name = $1
42 input = case response = Net::HTTP.get_response(URI.parse($1))
43 when Net::HTTPSuccess
44 response.body
45 when Net::HTTPRedirection
46 name = response['location']
47 fetch(response['location'], limit - 1)
48 else
49 response.error!
50 end
51 when /\A("[^"]*)"/
52 name = argv
53 input = argv
54 else # assumes file name
55 name = argv
56 input = File.new(argv)
57 end
58 @adl_validator.run(input, name)
59 rescue SocketError => message
60 puts "SocketError: #{message}"
61 rescue Racc::ParseError => message
62 puts "ParseError: #{message}"
63 else
64 puts "Accepted '#{argv}'"
65 ensure
66# input.close if input.kind_of? IO
67 end
68 end
69 end
70 end
71 end # of CommandLine
72end # of OpenEHR
73
74if __FILE__ == $0
75 begin
76 arguments = OpenEHR::CommandLine::Arguments.new(ARGV)
77 validator = OpenEHR::CommandLine::ADLValidator.new(arguments)
78 validator.run
79 end
80end
81
82
83
84
85
Note: See TracBrowser for help on using the repository browser.