[#52047] ruby-talk separation, part II — " JamesBritt" <james@...>

32 messages 2002/10/01
[#52099] Re: ruby-talk separation, part II — Holden Glova <dsafari@...> 2002/10/01

-----BEGIN PGP SIGNED MESSAGE-----

[#52111] Re: ruby-talk separation, part II — "Bulat Ziganshin" <bulatz@...> 2002/10/01

[#52118] Re: ruby-talk separation, part II — Jim Freeze <jim@...> 2002/10/01

On Tue, Oct 01, 2002 at 09:03:44PM +0900, Bulat Ziganshin wrote:

[#52167] Re: ruby-talk separation, part II — Sean Chittenden <sean@...> 2002/10/01

FreeBSD's got a decent setup. Few additions to the list here:

[#52245] Compiling stuff under Windows: list of problems — "Gavin Sinclair" <gsinclair@...>

I don't want my tortuous experience of trying to get things working under this

13 messages 2002/10/02

[#52259] bugs — "Kontra, Gergely" <kgergely@...>

Hi!

26 messages 2002/10/02
[#52261] Re: bugs — nobu.nokada@... 2002/10/02

Hi,

[#52269] Re: bugs — "Stathy G. Touloumis" <stathy.touloumis@...> 2002/10/02

[#52300] Can soneone tell me what I'm doing wrong... — Jeremy Gregorio <gunvalk@...>

I'm trying to write a little script to rename my mp3s I started with this:

15 messages 2002/10/02

[#52391] CRuby (Was: R) — Nikodemus Siivola <tsiivola@...>

CRuby = subset of Ruby + typed methods + compiler to C

28 messages 2002/10/03
[#52395] Re: CRuby (Was: R) — Anders Bengtsson <ndrsbngtssn@...> 2002/10/03

Nikodemus Siivola wrote:

[#52400] Re: CRuby (Was: R) — Michael Campbell <michael_s_campbell@...> 2002/10/03

[#52402] Re: CRuby (Was: R) — Anders Bengtsson <ndrsbngtssn@...> 2002/10/03

Michael Campbell wrote:

[#52436] Specifying local and external block parameters (that old chestnut) — "Gavin Sinclair" <gsinclair@...>

I've cannibalised discussion from the "Bugs" thread. I hope it is a service to

49 messages 2002/10/04
[#52440] Re: Specifying local and external block parameters (that old chestnut) — matz@... (Yukihiro Matsumoto) 2002/10/04

Hi,

[#52610] Re: Specifying local and external block parameters (that old chestnut) — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/10/06

[#52612] Re: Specifying local and external block parameters (that old chestnut) — ts <decoux@...> 2002/10/06

>>>>> "M" == MikkelFJ <mikkelfj-anti-spam@bigfoot.com> writes:

[#52557] Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...>

Hi:

27 messages 2002/10/05
[#52598] Re: Speed of Ruby/modruby vs PHP — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/10/06

[#52600] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

On Sun, Oct 06, 2002 at 08:50:48PM +0900, MikkelFJ wrote:

[#52601] Re: Speed of Ruby/modruby vs PHP — MoonWolf <moonwolf@...> 2002/10/06

> How do I configure mod_ruby to run with a cached script?

[#52628] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

Ok, here is how I understand this.

[#52636] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

On Sun, Oct 06, 2002 at 05:07:25PM -0400, Jim Freeze wrote:

[#52581] Platform again — Friedrich Dominicus <frido@...>

Well I ask again. On what platforms are you using ruby most of the

36 messages 2002/10/06

[#52602] Another take on ensuring right args to methods — Massimiliano Mirra <list@...>

11 messages 2002/10/06

[#52653] webforms — "Kontra, Gergely" <kgergely@...>

Hi!

19 messages 2002/10/07

[#52669] Things That Newcomers to Ruby Should Know — billtj@... (Bill Tj)

Hi,

59 messages 2002/10/07
[#52805] Re: Things That Newcomers to Ruby Should Know — "Bulat Ziganshin" <bulatz@...> 2002/10/09

Hello Bill,

[#52982] Re: Things That Newcomers to Ruby Should Know — "Kontra, Gergely" <kgergely@...> 2002/10/11

>3) 'x+=b', 'x*=b' and other assignment operators is internally translated

[#52727] block vars (some theory) — "Bulat Ziganshin" <bulatz@...>

Hello all,

37 messages 2002/10/08
[#52728] Re: block vars (some theory) — ts <decoux@...> 2002/10/08

>>>>> "B" == Bulat Ziganshin <bulatz@integ.ru> writes:

[#52806] strange Hash default behaviour — John Tromp <tromp@...>

I wrote a ruby program to read a list of graph edges and produce

16 messages 2002/10/09

[#52823] CGI sessions without cookies? — Stefan Scholl <stefan.scholl@...>

I haven't tried sessions, yet. But I'm curious if you can work

17 messages 2002/10/09

[#52848] Polymorphism, Isomorphism — ptkwt@...1.aracnet.com (Phil Tomson)

Consider this a bit of public pondering...

21 messages 2002/10/09

[#53045] Sorting — warren@... (Warren Brian Noronha)

dear developer,

31 messages 2002/10/12
[#53048] Re: Sorting — dblack@... 2002/10/12

Hello --

[#53082] Re: Sorting — "Mike Campbell" <michael_s_campbell@...> 2002/10/13

> I think almost anything is a better name than CRAN, as that (to me)

[#53083] Re: Sorting — dblack@... 2002/10/13

Hello --

[#53093] Re: Sorting — "Gavin Sinclair" <gsinclair@...> 2002/10/13

[#53109] Re: Sorting — "Mike Campbell" <michael_s_campbell@...> 2002/10/13

> Just a thought: why *not* copy CPAN? It's pretty good, isn't it?

[#53183] final in ruby — "Kontra, Gergely" <kgergely@...>

Hi!

21 messages 2002/10/14

[#53230] Please check my algorithm — Vincent Foley <vinfoley@...>

Hi, I found a nice programming challenge:

12 messages 2002/10/14

[#53278] ruby-dev summary 18458-18504 — TAKAHASHI Masayoshi <maki@...>

Hi all,

16 messages 2002/10/15

[#53285] Psyco — Travis Whitton <whitton@...>

There's an interesting article on IBM developerWorks about a new program

18 messages 2002/10/16

[#53297] Interfaces in Ruby — web2ed@... (Edward Wilson)

Is there a way to write/inforce interfaces in Ruby like one can using

44 messages 2002/10/16
[#53300] Re: Interfaces in Ruby — Chris Gehlker <canyonrat@...> 2002/10/16

[#53334] Re: Interfaces in Ruby — Paul Brannan <pbrannan@...> 2002/10/16

On Wed, Oct 16, 2002 at 01:30:04PM +0900, Chris Gehlker wrote:

[#53409] Re: Interfaces in Ruby — web2ed@... (Edward Wilson) 2002/10/17

>http://rm-f.net/~cout/code/ruby/treasures/RubyTreasures-0.3/lib/hacks/interface.rb.html

[#53470] Re: Interfaces in Ruby — Paul Brannan <pbrannan@...> 2002/10/17

On Thu, Oct 17, 2002 at 01:25:57PM +0900, Edward Wilson wrote:

[#53514] Re: Interfaces in Ruby — Massimiliano Mirra <list@...> 2002/10/18

On Fri, Oct 18, 2002 at 12:16:30AM +0900, Paul Brannan wrote:

[#53359] Things That Newcomers to Ruby Should Know (10/16/02) — William Djaja Tjokroaminata <billtj@...>

Hi,

29 messages 2002/10/16
[#53774] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Hal E. Fulton" <hal9000@...> 2002/10/22

----- Original Message -----

[#53556] Help wanted with an experimental FAQ facility — Dave Thomas <Dave@...>

24 messages 2002/10/18

[#53626] XMLParser, NQXML, REXML, ... — Armin Roehrl <armin@...>

Hi XML-freaks,

23 messages 2002/10/20
[#53897] Re: XMLParser, NQXML, REXML, ... — Sean Chittenden <sean@...> 2002/10/23

> Hi XML-freaks,

[#53902] Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 13:01:59 +0900, Sean Chittenden wrote:

[#53904] Re: Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Sean Chittenden <sean@...> 2002/10/23

> > Markus and I are working on rubydoc which is now able to

[#53911] Re: Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 14:07:46 +0900, Sean Chittenden wrote:

[#53652] RAA.succ? — ptkwt@...1.aracnet.com (Phil Tomson)

I hope there will be some discussion of RAA.succ (or is it RAA.next) at

78 messages 2002/10/21
[#53654] Re: RAA.succ? — nobu.nokada@... 2002/10/21

Hi,

[#53669] Re: RAA.succ? — "NAKAMURA, Hiroshi" <nahi@...> 2002/10/21

Hi,

[#54022] RAA replaced — "NAKAMURA, Hiroshi" <nahi@...> 2002/10/24

Hi,

[#53914] Re: RAA.succ? (rpkg vs rubynet) — ptkwt@...1.aracnet.com (Phil Tomson) 2002/10/23

In article <20021023041621.GC48080@perrin.int.nxad.com>,

[#53688] functional Ruby equiv to this perl snippet — bobx@... (Bob)

# parses a text file looking for server names and ignoring lines

29 messages 2002/10/21
[#53694] Re: functional Ruby equiv to this perl snippet — Austin Ziegler <austin@...> 2002/10/21

def load_server_list

[#53696] Re: functional Ruby equiv to this perl snippet — Austin Ziegler <austin@...> 2002/10/21

I realised that my first test wasn't good for non-empty but blank

[#53718] Re: functional Ruby equiv to this perl snippet — "Bob X" <bobx@...> 2002/10/21

"Austin Ziegler" <austin@halostatue.ca> wrote in message

[#53703] rb_gc_register_address problem — Paul Brannan <pbrannan@...>

We ran into a problem today with the garbage collector (caused by our

28 messages 2002/10/21

[#53771] Perl multiple match RE in Ruby? — michael libby <x@...>

-----BEGIN PGP SIGNED MESSAGE-----

14 messages 2002/10/22

[#53865] XMLRPC and IP authentication — Daniel Berger <djberge@...>

Hi all,

13 messages 2002/10/22

[#53884] SQLite — "Bob X" <bobx@...>

Anyone working on a Ruby interface for SQLite?

109 messages 2002/10/23
[#53894] Re: SQLite — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 10:38:31 +0900, Bob X wrote:

[#54714] Thoughts on Ruby — Enric Lafont <enric@1smart.com> 2002/11/03

Hi all,

[#54724] Re: Thoughts on Ruby — Albert Wagner <alwagner@...> 2002/11/03

On Saturday 02 November 2002 7:57 pm, Enric Lafont wrote:

[#54725] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/03

On Sun, 3 Nov 2002 10:57:29 +0900, Enric Lafont wrote:

[#54784] Re: Thoughts on Ruby — Enric Lafont <enric@1smart.com> 2002/11/03

Austin Ziegler wrote:

[#54802] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/03

On Mon, 4 Nov 2002 06:44:46 +0900, Enric Lafont wrote:

[#54826] Re: Thoughts on Ruby — "Gavin Sinclair" <gsinclair@...> 2002/11/04

From: "Enric Lafont" <enric@1smart.com>

[#54903] Re: Thoughts on Ruby — Brian Candler <B.Candler@...> 2002/11/05

On Mon, Nov 04, 2002 at 10:02:12PM +0900, Gavin Sinclair wrote:

[#54920] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/05

On Tue, 5 Nov 2002 20:18:47 +0900, Brian Candler wrote:

[#54927] Re: Thoughts on Ruby lack of IDE — Brad Cox <bcox@...> 2002/11/05

It is a sign of my hybrid Objective-C background, no doubt, but I

[#54929] Re: Thoughts on Ruby lack of IDE — "Curt Hibbs" <curt@...> 2002/11/05

Brad Cox wrote:

[#55322] FreeRIDE and FUI ?? (was: Re: Thoughts on Ruby lack of IDE) — "Rich" <rich@...> 2002/11/08

> > >

[#55346] Re: FreeRIDE and FUI ?? (was: Re: Thoughts on Ruby lack of IDE) — "Rich Kilmer" <rich@...> 2002/11/09

> -----Original Message-----

[#53953] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Mills Thomas (app1tam)" <app1tam@...>

But why does it really, REALLY mean that? Was there a reason for doing

13 messages 2002/10/23

[#53957] NODE tree introspection — Simon Cozens <simon@...>

13 messages 2002/10/23

[#53983] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Mills Thomas (app1tam)" <app1tam@...>

Actually, the way you describe '+=' makes sense to me. It is what I would

17 messages 2002/10/23
[#54001] Re: Things That Newcomers to Ruby Should Know (10/16/02) — William Djaja Tjokroaminata <billtj@...> 2002/10/23

Hi,

[#54012] Re: Things That Newcomers to Ruby Should Know (10/16/02) — dblack@... 2002/10/24

Hi --

[#54111] How come true, false don't support <=> (comparison) operator? — cilibrar@... (Rudi Cilibrasi)

I am wondering if there is a good reason why Ruby does not by default

24 messages 2002/10/25
[#54112] Re: How come true, false don't support <=> (comparison) operator? — dblack@... 2002/10/25

Hello --

[#54139] Re: How come true, false don't support <=> (comparison) operator? — ptkwt@...1.aracnet.com (Phil Tomson) 2002/10/25

In article <Pine.LNX.4.44.0210250754010.2650-100000@candle.superlink.net>,

[#54156] Re: How come true, false don't support <=> (comparison) operator? — dblack@... 2002/10/25

Hi --

[#54239] Snippet request: Ruby Web Server written in under an hour — Phlip <phlipcpp@...>

Rubies:

37 messages 2002/10/28
[#54328] Snippet: Tiny Featureless Ruby Web Server — Phlip <phlipcpp@...> 2002/10/29

Rubies:

[#54339] method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/29

Hi --

[#54517] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — William Djaja Tjokroaminata <billtj@...> 2002/10/30

Bulat Ziganshin <bulatz@integ.ru> wrote:

[#54519] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/30

Hi --

[#54525] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — William Djaja Tjokroaminata <billtj@...> 2002/10/30

dblack@candle.superlink.net wrote:

[#54527] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/30

Hi --

[#54280] exerb & fox-problem; converting gui-script to .exe on windows — Armin Roehrl <armin@...>

Hi,

12 messages 2002/10/28

[#54354] good link to read as we contemplate RAA, RAA.succ, et al — Pat Eyler <pate@...>

http://www.onlamp.com/pub/wlg/2225

28 messages 2002/10/29
[#54356] Re: good link to read as we contemplate RAA, RAA.succ, et al — dblack@... 2002/10/29

Hi --

[#54385] Re: good link to read as we contemplate RAA, RAA.succ, et al — " JamesBritt" <james@...> 2002/10/29

> Interesting. Simon (hi Simon!) is probably right that "Definitive

[#54421] want to meet Microsoft .NET guy? — matz@... (Yukihiro Matsumoto)

Hi,

17 messages 2002/10/30

[#54449] feature idea: custom literals — loats205@... (loats205)

wouldn't it be cool if you could define custom literal representations for your

30 messages 2002/10/30
[#54459] Re: feature idea: custom literals — Peter Hickman <peter@...> 2002/10/30

loats205 wrote:

[#54476] Re: feature idea: custom literals — Nikodemus Siivola <tsiivola@...> 2002/10/30

Re: Freetext search (was: iowa)

From: Reimer Behrends <behrends@...>
Date: 2002-10-08 12:49:52 UTC
List: ruby-talk #52738
Dave Thomas (Dave@PragmaticProgrammer.com) wrote:
[...]
>  Something I'd like is queries such as
>  
>    article contains:  +matz +irb -python
>  
>  I know I can do this using egrep n times and combining the results,
>  but I'd really rather not.

Given that you're working with a small set of files, why don't you use a
simple cross reference database and set operations? See below for a
quick and dirty implementation of one (it uses Dan Bernstein's cdb
database for a good compromise between size and speed, but should be
adaptable to Berkeley DB or GDBM). Note that the size of the cross
reference index will be on the order of magnitude of the original data,
so it won't work too well for large sets of files. On the other hand, if
you don't mind wasting some more space, phrase searching can be
implemented at essentially no additional CPU cost.

			Reimer Behrends


#!/usr/bin/env ruby

# See end of file for license.

require "cdb"		# Dan Bernstein's constant database
require "find"

# Regular expression for words. Should be case-insensitive.

WORDPAT = /\b[a-z0-9](?:[a-z0-9'-]*[a-z0-9]|)\b/i

# Key in the DB where the file list is stored.

INDEX_FILES = "__files__"

# gather_index: list of files -> cross reference index
# optional block argument to filter file content before scanning
# for words. Example:
# gather_index(Dir[SOURCE+"/**/*.html"]+Dir[SOURCE+"/**/*.txt"]) do
#   | filename, data |
#   if filename =~ /\.html$/ then
#     extern_filter("html2text -nobs", data)
#   else
#     data
#   end
# end
# 
# The resulting index uses numbers instead of file names to reference
# files.

def gather_index(files)
  result = {}
  index = 0
  files.each do
    | file |
    contents = File.open(file){|fp| fp.read}
    contents = yield file, contents if block_given?
    contents.scan(WORDPAT) do
      | word |
      word.downcase!
      result[word] ||= []
      list = result[word]
      if list[-1] != index then
        list << index
      end
    end
    index += 1
  end
  # The following code will remove common words from the database if
  # that is desired ("a", "the", "you", ...).

  #limit = [files.size*2/3,20].max
  #result.keys.each do
  #  | word |
  #  result.delete word if result[word].size >= limit
  #end

  result[INDEX_FILES] = files
  result
end

# search: Arguments are: the cross reference index (or any object with
# the same basic semantics as the hash and the same contents), lists of
# words that must occur, must not occur, and may occur. Result is an
# array of file names that satisfy these criteria.

def search(index, words=[], exclude=[], oneof=[])
  files = index[INDEX_FILES]
  if words.size == 0 and oneof.size == 0 then
    return []
  end
  result_and = nil
  # intersection of all sets of files that contain words in 'words'
  if words.size > 0 then
    set = index[words[0]]
    if set then
      result_and = set
    else
      puts "Not found: \"#{words[0]}\""
    end
    words[1..-1].each do
      | word |
      set = index[word]
      if not set then
        puts "Not found: \"#{word}\""
	next
      end
      if result_and then
	result_and &= set
      else
        result_and = set
      end
    end
  end
  # union of all sets of files that occur in 'oneof'
  # In addition, calculate weights depending on how many and which terms
  # are matched. Files that contain more search terms have a higher
  # weight. If files match the same number of search terms, terms that
  # occur earlier are given priority.
  result_or = []
  weights = Hash.new(0)
  weight = oneof.size**2 + oneof.size
  oneof.each do
    | word |
    set = index[word]
    if not set then
      puts "Not found: \"#{word}\""
      next
    end
    result_or |= set
    set.each do | file | weights[file] += weight end
    weight -= 1
  end
  # remove all files that contain words in the 'exclude' list.
  result = result_and || result_or
  exclude.each do
    | word |
    set = index[word]
    if not set then
      puts "Not found: \"#{word}\""
      next
    end
    result -= set
  end
  # sort according to weighting criteria and replace indices with
  # file names.
  result.sort! {|i1, i2| [-weights[i1], i1] <=> [-weights[i2], i2] }
  result.map {|i| files[i]}
end

# marshalled_access adds a [] method that automatically unmarshals the
# result.

def marshalled_access(index)
  class <<index
    def [](key)
      result = super(key)
      result and Marshal.load(result)
    end
  end
end

# all_files expands path names on the list and replaces directories
# by a list of files that can be found under them.

def all_files(list)
  result = []
  list = list.map{|path| File.expand_path path}
  list.each do
    | path |
    if File.file? path then
      result << path
    else
      Find.find(path) do
        | path2 |
	result << path2 if File.file? path2
      end
    end
  end
  result
end

# main program

op = ARGV.shift
indexfile = ARGV.shift

case op
when "make" then
  if File.exists? indexfile then
    $stderr.puts "Index file \"#{indexfile}\" exists -- aborting."
    exit 1
  end
  files = all_files(ARGV)
  index = gather_index(files)
  # We write the index as a database
  CDB.create(indexfile, indexfile+".tmp") do
    | db |
    index.each_pair do
      | key, value |
      db[key] = Marshal.dump(value)
    end
  end
when "search" then
  # We open the database and disguise it as a hash, rather than a
  # string -> string mapping with marshalled data.
  index = CDB.new(indexfile)
  marshalled_access(index)
  words = []
  oneof = []
  exclude = []
  ARGV.each do
    | word |
    word = word.downcase
    case word
    when /^\+/ then
      oneof << word[1..-1]
    when /^-/ then
      exclude << word[1..-1]
    else
      words << word
    end
  end
  search(index, words, exclude, oneof).each do
    | file |
    puts file
  end
else
  puts "Usage:"
  puts "#{$0} make <indexfile> <file...>"
  puts "#{$0} search <indexfile> <term...> <+term...> <-term...>"
  puts "  Prefix + denotes a word that may occur."
  puts "  Prefix - denotes a word that must not occur."
  puts "  All other words must occur."
  exit 1
end

# Copyright (c) 2002 Reimer Behrends

# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:

# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

In This Thread