[#395238] rubygem: ispunity (unite all your internet connections) — Arun Tomar <tomar.arun@...>

Dear friends,

12 messages 2012/05/01

[#395250] Overwriting one Ruby array or arrays with another — Craig Law <lists@...>

Hi

14 messages 2012/05/02

[#395258] array of strings - finding letter combinations — "Sebastjan H." <lists@...>

Hi All,

16 messages 2012/05/02

[#395357] Why Enumerator#next does not return more than one value? — Földes László <lists@...>

If I have an Enumerator which yields elements of a mathematical series

10 messages 2012/05/07

[#395373] How to use Data_Wrap_Struct to assign the DATA VALUE to an exsiting Ruby object? — Iñaki Baz Castillo <ibc@...>

Hi, my code receives an arbitrary klass name (provided by the user)

8 messages 2012/05/07

[#395429] passing via instance variable or regular () — sam jam <lists@...>

def first

10 messages 2012/05/10

[#395463] I'm looking for a Metaprogramming Project — Phil Stone <lists@...>

Hello,

19 messages 2012/05/11

[#395548] A million reasons why Encoding was a mistake — Marc Heiler <lists@...>

Newcomer wants to try Ruby.

15 messages 2012/05/15
[#395561] Re: A million reasons why Encoding was a mistake — Ryan Davis <ryand-ruby@...> 2012/05/15

[#395595] Re: A million reasons why Encoding was a mistake — Brian Candler <lists@...> 2012/05/16

I will add that the OP is not entirely alone in his opinion.

[#395551] How to ensure that a block runs entirely after other threads? (Thread.exclusive does not "work") — Iñaki Baz Castillo <ibc@...>

Hi, I expected that in the following example code, thread t1 would not

8 messages 2012/05/15

[#395575] GUI with ruby on windows — David Acosta <lists@...>

hello friends, i am a begginer and i have a litlle question, how can i

17 messages 2012/05/16

[#395604] what is going wrong here? — roob noob <lists@...>

Notice the initialization of both classes in each of the examples, if

20 messages 2012/05/16

[#395646] rb_gc_register_address() or rb_gc_mark()? — Iñaki Baz Castillo <ibc@...>

Hi, I've bad experiences with rb_gc_register_address(), it does never

16 messages 2012/05/17

[#395686] reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...>

Hi,

19 messages 2012/05/18
[#395694] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Hello,

[#395697] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061272:

[#395698] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Sebastjan H. wrote in post #1061276:

[#395699] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061277:

[#395750] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Hi,

[#395754] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Sebastjan H. wrote in post #1061483:

[#395740] ? Ruby through CGI and Rails — Shaun Lloyd <list@...>

Hi everybody,

22 messages 2012/05/21
[#395764] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/21

Shaun Lloyd wrote in post #1061455:

[#395786] Re: Ruby through CGI and Rails — Shaun Lloyd <list@...> 2012/05/22

On 22/05/12 03:37, Brian Candler wrote:

[#395838] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/23

Shaun Lloyd wrote in post #1061602:

[#395787] Changing self class from inside a method?? — David Madison <lists@...>

Let's start off with the assumption I want a method that allows an

10 messages 2012/05/22

[#395841] Memory-efficient set of Fixnums — George Dupre <lists@...>

Hi,

25 messages 2012/05/23

[#395883] looking for a ruby idiom : r=foo; return r if r — botp <botpena@...>

Hi All,

11 messages 2012/05/24

[#395966] Am I justified to use a global variable if it must be used in all scopes? — Phil Stone <lists@...>

Hello,

12 messages 2012/05/27

[#396010] does this leak more than the size of the string via timing side channels — rooby shoez <lists@...>

string1 = "string"

16 messages 2012/05/29

[#396038] Is it possible to avoid longjmp in exceptions, Thread#kill, exit(), signals? — Iñaki Baz Castillo <ibc@...>

Hi, my Ruby C extension runs a C loop (libuv) without GVL. At some

8 messages 2012/05/29

how to refactor these codes ,could you help me!

From: stang stang <lists@...>
Date: 2012-05-04 16:52:14 UTC
List: ruby-talk #395316
hi,these codes is my working codes recently.I am not satisfied with the
codes for too much repeated codes,I try to reduce duplex codes but
failed.
I think DZHFileProperty and HXFileProperty concentrate all file property
, that could not be changed.

I find that if codes below could be refactor
      module DzhSelfStockFile        module HxSelfstockFile
          DzhFileProperty              include HxFileProperty
                            | |
                            | |
                           \   /
                            \ /
         module SelfStockFile
           include FileProperty(dynamic include according arg Hx or Dzh)

    merge DZHBlock HxBlock to Block, merge DzhSelfStockFile
HxSelfStockFile to SelfStockFile . but i canot to dynamic incluce module
according to argument.could you help me ,thank you !

module DzhFileProperty

  def  initialize()
      @file="d:\\ProgramFiles\\DZH\\userdata\\block\\閾ェ騾芽ぃ.BLK"
      @start="\245\000Q\377"
      @internal="\000\000\000\000"
      @backup_file=@file+".tmp"
      @code_regular_expression=/S[H|Z]\d{6}/
  end

  def after_read_each(stock)
    return stock
  end

  def before_yield_each(stock)
    return stock
  end

end


module DzhSelfStockFile

  include DzhFileProperty

  def  initialize
    super
  end

  def display
    open(@file,'rb').each { |x| p x}
  end

  def backup
    open(@backup_file,'wb') {|f| f<< read}
  end

  def restore
    open(@file,'wb') {|f| f<< read_backup}
  end

  def  clean_zero
    puts "@file = nil"  if (@file==nil)
    open(@file,'wb') {|f| f<< @start}
  end

  def read
    IO.read(@file)
  end

  def read_backup
    IO.read(@backup_file)
  end

  def  codes
    @codes=[]
    read.scan(@code_regular_expression).each do |w|
      @codes<<(after_read_each w)
    end
    @codes.sort.uniq
  end

  def write(stock)
    write_array_of [stock]
  end

  def write_array_of(stocks)
    add_stocks_string=yield_all_string  stocks
    open(@file,'wb') {|f| f << add_stocks_string;f.flush}
  end

  def del(stock)
    stockArray=codes.delete_if {|x| x==stock}
    open(@file,'wb'){|f| f << (yield_string stockArray)}
  end

  def yield_all_string(stocks)
    yield_string  (codes+stocks).sort.uniq
  end

  def yield_string(stocks)
    stocks_string=@start
    stocks.sort.uniq.each do |stock|
      stocks_string+=(before_yield_each(stock)+@internal)
    end
  end

  private  :yield_all_string,:yield_string
end

class DzhBlock

  include DzhSelfStockFile

  def initialize
    super
  end

  def clean
    clean_zero
  end

  def  have
    codes
  end

  def add(stock)
    add_batch [stock]
  end

  def add_batch(stocks)
    write_array_of  stocks
  end

  def del(stock)
    super stock
  end

end


==============================================================
module HxFileProperty

  def  initialize
    @file="D:\\ProgramFiles\\hxzq\\T0002\\blocknew\\ZXG.blk"
    @start=""
    @internal="\r\n"
    @backup_file=@file+".tmp"
    @code_regular_expression=/\d{7}/
  end

  def after_read_each(stock)
    return stock="SH"+stock[1,7] if stock[0,1]=="1"
     return stock="SZ"+stock[1,7] if stock[0,1]=="0"
  end

  def before_yield_each(stock)
    return   stock="1"+stock[2,6]  if stock[0,2]=="SH"
    return  stock="0"+stock[2,6]  if stock[0,2]=="SZ"
  end

end

module HxSelfstockFile

  include HxFileProperty

  def  initialize
    super
  end

  def display
    open(@file,'rb').each { |x| p x}
  end

  def backup
    open(@backup_file,'wb') {|f| f<< read}
  end

  def restore
    open(@file,'wb') {|f| f<< read_backup}
  end

  def  clean_zero
    puts "@file = nil"  if (@file==nil)
    open(@file,'wb') {|f| f<< @start}
  end

  def read
    IO.read(@file)
  end

  def read_backup
    IO.read(@backup_file)
  end

  def  codes
    @codes=[]
    read.scan(@code_regular_expression).each do |w|
       @codes<< (after_read_each w )
    end
    @codes.sort.uniq
  end


  def write(stock)
    write_array_of [stock]
  end

  def write_array_of(stocks)
    add_stocks_string=yield_all_string  stocks
    open(@file,'wb') {|f| f << add_stocks_string;f.flush}
  end

  def del(stock)
    stockArray=codes.delete_if {|x| x==stock}
    open(@file,'wb'){|f| f << (yield_string stockArray)}
  end

  def yield_all_string(stocks)
    yield_string  (codes+stocks).sort.uniq
  end

  def yield_string(stocks)
    stocks_string=@start
    stocks.sort.uniq.each do |stock|
      stocks_string+=(before_yield_each(stock)+@internal)
    end
    stocks_string
  end

  private  :yield_all_string,:yield_string
end

class HxBlock

  include HxSelfstockFile

  def initialize
    super
  end

  def clean
    clean_zero
  end

  def  have
    codes
  end

  def add(stock)
    add_batch [stock]
  end

  def add_batch(stocks)
    write_array_of  stocks
  end

  def del(stock)
    super stock
  end
end

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next