[#93964] perl6 grammar rules in ruby — Charles Comstock <cc1@...>

Has anyone taken a look at the idea of having embedded grammars in ruby

21 messages 2004/03/01

[#94023] Why's (Poignant) Guide to Ruby, Chapter Four: Little Leaves of Code — why the lucky stiff <ruby-talk@...>

Just wanted everyone to know that Chapter Four of the (Poignant) Guide

15 messages 2004/03/01

[#94037] Rubyx OS (Ruby oriented linux distro) — Andrew Walrond <andrew@...>

I am pleased to announce the first public release of Rubyx, codename

39 messages 2004/03/02

[#94062] pickaxe with pics? — Dick Davies <rasputnik@...>

17 messages 2004/03/02

[#94068] dynamic assignment of instance variables — gv@... (Gerard A.W. Vreeswijk)

$ cat try.rb

19 messages 2004/03/02

[#94110] why are Hashes so unsorted? what's your solution? — Ruby Baby <ruby@...>

I try to avoid questions like "Why doesn't Ruby do what ___ does?"

14 messages 2004/03/03

[#94144] Mozilla gets support for other client-side languages in the future, how about Ruby? — Erik Terpstra <erik@...>

Interesting slides:

9 messages 2004/03/03

[#94190] rescue inside block -> syntax error — Simon Strandgaard <neoneye@...>

While reading this message:

15 messages 2004/03/04

[#94424] random range — Charles Comstock <cc1@...>

Why doesn't rand take an integer range and then generate a random number

23 messages 2004/03/06
[#94432] Re: random range — Hal Fulton <hal9000@...> 2004/03/06

Charles Comstock wrote:

[#94434] Re: random range — Joel VanderWerf <vjoel@...> 2004/03/06

Hal Fulton wrote:

[#94436] Re: random range — "David A. Black" <dblack@...> 2004/03/06

Hi --

[#94487] Looking for HTML templating system — Andreas Schwarz <usenet@...>

I am looking for a templating system for my forum

19 messages 2004/03/07

[#94517] proposal: class<<obj to invoke extend_object — Simon Strandgaard <neoneye@...>

'obj.extend' and 'class<<obj' are close cousins..

22 messages 2004/03/07

[#94612] RedCloth 2.0.2 -- A Textile Humane Web Text Generator — why the lucky stiff <ruby-talk@...>

For your immediate perusal and swift renouncement:

10 messages 2004/03/09

[#94672] saving array — mopthisandthat@... (Phidippus)

After I do bunch of computations and create a huge array with bunch of

18 messages 2004/03/10

[#94686] Possibility of 2nd edition of _The Ruby Way_ — Hal Fulton <hal9000@...>

Hello, all.

17 messages 2004/03/10

[#94760] convincing a webhost to support ruby — Mark Hubbart <discord@...>

Hi all,

15 messages 2004/03/11

[#94813] Jruby 0.7.0 — Thomas E Enebo <enebo@...>

20 messages 2004/03/12
[#94815] Re: [ANN] Jruby 0.7.0 — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com> 2004/03/12

il Sat, 13 Mar 2004 02:33:49 +0900, Thomas E Enebo <enebo@acm.org> ha

[#94817] Re: [ANN] Jruby 0.7.0 — Thomas E Enebo <enebo@...> 2004/03/12

On Sat, 13 Mar 2004, gabriele renzi defenestrated me:

[#94935] RubyGems 0.2.0 — Chad Fowler <chad@...>

The first public release of RubyGems (http://rubygems.rubyforge.org)

26 messages 2004/03/14

[#94985] GUI testing on unix — Simon Strandgaard <neoneye@...>

I am curious to if there exists any GUI testing packages for unix.

17 messages 2004/03/16

[#94998] RAA trouble and maintenance — "NAKAMURA, Hiroshi" <nahi@...>

Hi,

14 messages 2004/03/16

[#95014] RAA - So much is broken — Lothar Scholz <mailinglists@...>

Hello,

15 messages 2004/03/16

[#95060] YAML tutorial — Matt Lawrence <matt@...>

Ok, I am so not a Ruby wizard. In fact, I don't do much development at

15 messages 2004/03/17

[#95098] groovy — David Garamond <lists@...6.isreserved.com>

Groovy, a scripting language targeted for JVM, was mentioned in Slashdot

14 messages 2004/03/17

[#95155] Installer packages for MacOSX — Mark Hubbart <discord@...>

Hi, all

18 messages 2004/03/17

[#95190] Thinking about a date-matching algorithm... — Hal Fulton <hal9000@...>

I did a little swapping of ideas with dblack on this. Now I'm

22 messages 2004/03/18

[#95200] Log4r 1.0.5 now with RubyGems option — Leon Torres <leon@...>

Greetings, I'm pleased to announce the release of Log4r 1.0.5. The

11 messages 2004/03/18

[#95230] Ruby and Mozilla — paul vudmaska <paul@...>

--- Simon Strandgaard <neoneye@adslhome.dk <http://us.f104.mail.yahoo.com/ym/Compose?To=neoneye@adslhome.dk&YY=90525&order=down&sort=date&pos=0&view=a&head=b>> wrote:

12 messages 2004/03/18

[#95290] calling outer-scope method of same name — "Bill Kelly" <billk@...>

Hi all!

16 messages 2004/03/18
[#95292] Re: calling outer-scope method of same name — "David A. Black" <dblack@...> 2004/03/18

Hi --

[#95340] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...>

Hi folks,

31 messages 2004/03/19
[#95367] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/19

Hi,

[#95405] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/19

Makoto Kuwata wrote:

[#95412] Re: [ANN] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...> 2004/03/19

Andreas,

[#95453] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/20

Makoto Kuwata wrote:

[#95484] Re: [ANN] Kwartz (2004-03-19) released — Makoto Kuwata <kwa@...> 2004/03/21

[#95490] Re: [ANN] Kwartz (2004-03-19) released — Thomas Fini Hansen <beast@...> 2004/03/21

On Sun, Mar 21, 2004 at 11:39:26AM +0900, Makoto Kuwata wrote:

[#95518] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/21

Makoto Kuwata wrote:

[#95553] Re: [ANN] Kwartz (2004-03-19) released — Andreas Schwarz <usenet@...> 2004/03/22

Makoto Kuwata wrote:

[#95386] Can $LOAD_PATH be relative? — ptkwt@... (Phil Tomson)

24 messages 2004/03/19
[#95389] Re: Can $LOAD_PATH be relative? — ptkwt@... (Phil Tomson) 2004/03/19

In article <wsqk71gd188.fsf@io.com>, Jim Menard <jimm@io.com> wrote:

[#95398] Re: Can $LOAD_PATH be relative? — Patrick Bennett <patrick.bennett@...> 2004/03/19

Phil Tomson wrote:

[#95400] Re: Can $LOAD_PATH be relative? — "David A. Black" <dblack@...> 2004/03/19

Hi --

[#95403] Re: Can $LOAD_PATH be relative? — Patrick Bennett <patrick.bennett@...> 2004/03/19

[#95434] converting javascript to ruby (nested methods) — yvon.thoravalNO-SPAM@... (Yvon Thoraval)

i have a script written in javascript and want to translate it into ruby

10 messages 2004/03/20

[#95517] What to gem? — Robert Feldt <feldt@...>

Hi,

14 messages 2004/03/21

[#95560] Need some advice on PickAxe II — Dave Thomas <dave@...>

Folks:

74 messages 2004/03/22

[#95636] Tempfile consuming a lot of memory — thomass@... (Thomas)

I'm using a lot of Tempfile's and I have been made aware that they

17 messages 2004/03/23

[#95693] proposal - enforce lower_case for variables and methods — Simon Strandgaard <neoneye@...>

Ruby does already enforce CamelCase for class/modules.

29 messages 2004/03/24

[#95769] File.stat.size errors with file sizes over 2Gigs. — walter@...

File.stat('file_name').size returns erroneous file sizes when the

16 messages 2004/03/24

[#95782] Quick Introduction to RubyGems — Gavin Sinclair <gsinclair@...>

Hi folks,

17 messages 2004/03/24

[#95875] Errors with "make" step, while compiling ruby under AIX 5.2 — Ruby Ruby <ruby4lover@...>

I am wanted to install ruby 1.8.1 under AIX 5.2. During the installation, while doing the "make" part of it, the process abruptily ended with the following errors:

15 messages 2004/03/25
[#95883] Re: Errors with "make" step, while compiling ruby under AIX 5.2 — nobu.nokada@... 2004/03/26

Hi,

[#95918] Re: Errors with "make" step, while compiling ruby under AIX 5.2 — Ruby Ruby <ruby4lover@...> 2004/03/26

I am sorry to insist but this is important to me.

[#95960] Status of AOP in Ruby — Markus Jais <markusjais@...>

Hello

22 messages 2004/03/27

[#95984] deciding between ruby and python — "Serve Lau" <ik@...>

I'm trying to decide to learn either python or ruby. Are there fundamental

119 messages 2004/03/28
[#96006] Re: deciding between ruby and python — klausm0762@... (Klaus Momberger) 2004/03/28

"Serve Lau" <ik@detongiser.com> wrote in message news:<106dlen5mr97q76@corp.supernews.com>...

[#96566] Re: deciding between ruby and python — Ville Vainio <ville@...> 2004/04/05

[#96503] Re: deciding between ruby and python — Ville Vainio <ville@...> 2004/04/04

>>>>> "James" == James Britt <jamesUNDERBARb@neurogami.com> writes:

[#96508] Re: deciding between ruby and python — Dan Doel <djd15@...> 2004/04/04

As you say, this whole thread has been done many times before.

[#96691] Re: deciding between ruby and python — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com> 2004/04/07

il Wed, 07 Apr 2004 05:35:39 GMT, dagbrown@LART.ca (Dave Brown) ha

[#95992] Madeleine 0.6 — Anders Bengtsson <ndrsbngtssn@...>

23 messages 2004/03/28

Re: binary data

From: "daz" <dooby@...10.karoo.co.uk>
Date: 2004-03-16 06:34:35 UTC
List: ruby-talk #95006
Alwin Blok wrote:
>
> I was playing wih the framebuffer device, using pack, I was able to get
> the bits where I wanted, but It's not handy when you want gradients and
> other fancy stuff
>
> When I use
>
> File.open('/dev/fb0','w') do |fb|
>    (800*600).times do
>      fb.putc 0b0111110000000000
>    end
> end
>
> I get half my screen filled, Which is obvious since putc is short for
> putchar (i assume), hence 8bits
> (the screen is 16 bits color)

For that specific case, 2 x putc

File.open('/dev/fb0','w') do |fb|
   (800*600).times do
     fb.putc 0b011111000
     fb.putc 0
   end
end

.... but, I know, you want something more flexible.
It intrigues me that you'd want to write, say, 10 bits when you
haven't specified left, right or no padding.

Here are all the screen size options on my display adapter.

# Test width / height exactly divisible by 8
ss = lambda {|w, h| p [w % 8 == 0, w/8, h % 8 == 0, h/8]}

ss[ 640,  480]
ss[ 800,  600]
ss[1024,  768]
ss[1152,  864]
ss[1280, 1024]
ss[1600, 1200]

#-> [true, 80, true, 60]
#-> [true, 100, true, 75]
#-> [true, 128, true, 96]
#-> [true, 144, true, 108]
#-> [true, 160, true, 128]
#-> [true, 200, true, 150]


Anyway, see if any of this helps ...

# Constraint:
#------------
# If the bit pattern is to be given as an integer,
# the pattern length also needs to given because
# leading zeros have no significance.

puts
puts 0b0110.to_s(2)
puts 0b00110.to_s(2)
puts 0b00000000000000110.to_s(2)
puts

# Strings have a slight advantage in this respect.
puts '0110'.length
puts '00110'.length
puts '00000000000000110'.length

# OTOH, with known length, leading zeros
# need not be given.

fmt = "%010b\n"
# (e.g. these examples are equivalent):
puts format(fmt, 0b110)
puts format(fmt, 0b0110)
puts format(fmt, 0b00000000000000110)
puts format(fmt, 6)


#-> 110
#-> 110
#-> 110
#->
#-> 4
#-> 5
#-> 17
#-> 0000000110
#-> 0000000110
#-> 0000000110
#-> 0000000110


Here's a buffered write to play with:
(messed up by comments & display stuff)

#-----------------------------------------------------------------
$watch = true

n = 0b1001_11101101_00010000
nbits = 20   # n represents 20 bits

## Normally start with:
##> buff = bufn = 0
buff = 0b10  # example remainder from "previous use"
bufn = 3     # buff represents 3 bits == 010

## Prepend bits (less than a full byte) to new bits
n |= (buff << nbits)
## Temporarily adjust the number of bits to write this time round
nb = nbits + bufn
        if $watch
          printf("START (%2d)  x[%08x] b[%0#{nb}b]\n\n", nb, n, n)
        end
while nb >= 8
  nb -=8
  mask = 0xff << nb  ## find the first full byte
  n8 = (n & mask)    ## temporarily ignore the rest
        if $watch
          printf("mask        x[%08x] b[%0#{nb+8}b]\n", mask, mask)
          printf("tmp         x[%08x] b[%0#{nb+8}b]\n", n8, n8)
        end
  n ^= n8            ## remove these 8 bits from the bits to be written
  n8 >>= nb          ## move these 8 bits down to bits 7......0
        if $watch
          printf("putc        x[%08x] b[%08b]\n\n", n8, n8)
          printf("NEXTn (%2d)  x[%08x] b[%0#{nb}b]\n", nb, n, n)
          puts '-'*10
        end
end

buff = n   ## save partial last byte for next time round
bufn = nb  ## AND the exact number of bits with significance
        if $watch
          printf("-> buff %0#{bufn}b\n", buff)
        end

#-----------------------------------------------------------------

###  And here's how it might look in the real world:


class Screen
  def initialize(w, h, nbits = 16)
    @width  = w
    @height = h
    @nbits  = nbits
    @screen = File.open('tbinary.dat', 'wb')
    @screen.sync = true
    @buff = 0
    @bufn = 0  # Number of unwritten bits in buffer
  end

  def close
    ##
    @buff <<= 8-@bufn    # align left in byte
    @screen.putc(@buff)  # write to screen
    @screen.close
  end

  def write(patt, nbits = @nbits)

    patt |= (@buff << nbits)
    nb = nbits + @bufn

    while nb >= 8
      nb -=8
      mask = 0xff << nb  ## find the first full byte
      n8 = (patt & mask) ## temporarily ignore the rest
      patt ^= n8         ## remove these 8 bits from the bits to be written
      n8 >>= nb          ## move these 8 bits down to bits 7......0
      @screen.putc(n8)  # write to screen
    end

    @buff = patt   ## save partial last byte for next time round
    @bufn = nb     ## AND the exact number of bits with significance
  end
end


fb = Screen.new(800, 600, 10)
5.times {fb.write(0b11111010, 16)}
fb.write 0b1101101101  # length 10 from Screen.new
fb.write 0b1010111010
fb.write(0b0011001100, 40)
fb.close

## See what happened ...
File.open('tbinary.dat', 'rb') do |fb|
  bd = fb.read
  puts bd.unpack('H*')
end

#-> 00fa00fa00fa00fa00fadb6ba00000000cc0


#-----------------------------------------------------------------


>
> So my real question is:
> What command do I use to put an arbitrary amount of bits?

putc

> I can think of some ways, but I hate it when it feels like a workaround.

I know what you mean.
It's not a workaround, it's a tricky problem.  Once you have a
method which does what you want, you can forget about the complexity
and advance to the next stage like adding Screen#fill(pattern).


> Thanks
> -Alwin


OK,


daz




In This Thread

Prev Next