Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 14:31
    straight-shoota synchronize #10416
  • 14:27
    straight-shoota synchronize #11715
  • 14:04
    straight-shoota milestoned #11750
  • 13:57
    straight-shoota labeled #11750
  • 13:57
    straight-shoota labeled #11750
  • 12:53
    mamantoha edited #11750
  • 12:52
    mamantoha edited #11750
  • 12:51
    mamantoha synchronize #11750
  • 11:26
    mamantoha synchronize #11750
  • 11:01
    mamantoha synchronize #11750
  • 10:54
    mamantoha synchronize #11750
  • 10:48
    mamantoha edited #11750
  • 10:48
    mamantoha edited #11750
  • 10:48
    mamantoha opened #11750
  • Jan 16 23:10
    skurhse closed #11739
  • Jan 16 19:55
    Blacksmoke16 unlabeled #11749
  • Jan 16 19:55
    Blacksmoke16 labeled #11749
  • Jan 16 19:25
    wolfgang371 closed #11749
  • Jan 16 18:41
    wolfgang371 opened #11749
  • Jan 16 18:41
    wolfgang371 labeled #11749
George Dietrich
@Blacksmoke16
totally could still use the glob, but require the common things before
mfiano
@mjfiano:matrix.org
[m]
True, I haven't come up with a hierarchy I like yet (only a handful of files)
So mostly working with a flat directory
George Dietrich
@Blacksmoke16
is suggested to group things by namespace
i.e. exceptions live in Athena::Routing::Exceptions namespace
etc
mfiano
@mjfiano:matrix.org
[m]
and that maps to src/athena/routing/exceptions/?
George Dietrich
@Blacksmoke16
technically src/exceptions
i dont use that extra directory, but otherwise would be like src/athena/exceptions
i guess i kinda use the org/repo name as the first two components to that
mfiano
@mjfiano:matrix.org
[m]
Ok, well it works explicitly listing each file in toposorted order. I'll work on organizing by concept next.
Unrelated:
What is an easy way to test the expansion of a macro you're in the process of writing? The crystal vim plugin has a function for this but it is bugged half the time. So I guess, what is the builtin way, and is there any 3rd party improvement, or utilities for writing macros in general?
George Dietrich
@Blacksmoke16
wouldn't that just be testing the functionality it generates?
dont really need to test the macro part of it specifically
mfiano
@mjfiano:matrix.org
[m]
I would like to see the generated code is what it is supposed to be before testing functionality. I've caught subtle errors that way in my years of macro writing.
George Dietrich
@Blacksmoke16
ohh i see
add a {{debug}} to the end of the macro
mfiano
@mjfiano:matrix.org
[m]
I see. Not sure how I missed that in the api docs. Would have been nice when I wrote the macros earlier.
Very nice
Are there any common general utility libraries for Crystal?
Things that got rejected for the stdlib, or things useful for everyday programming that didn't make it into the language yet for some reason or other?
George Dietrich
@Blacksmoke16
Like what?
There are some, but depends on what you are doing exactly
I'd definitely suggest using https://github.com/crystal-ameba/ameba tho
mfiano
@mjfiano:matrix.org
[m]
I have that and debug.cr so far. I meant like general purpose utilities. Lisp has "alexandria", which includes necessities like correct macro writing macros such as once_only I discussed before, pattern matching stuff, etc etc
George Dietrich
@Blacksmoke16
Can't say I've heard of debug.cr. I also use Athena's spec component sometimes, but other than that nothing comes to mind stdlib usually has everything I need.
mfiano
@mjfiano:matrix.org
[m]
debug.cr is basically pp! but with color, line numbers, etc, and can use in the middle of expressions
George Dietrich
@Blacksmoke16
Fair enough
mfiano
@mjfiano:matrix.org
[m]
Ok so
In my main src/origin.cr file I have this and only this:
require "./origin/scalar"
require "./origin/shared"
require "./origin/vector"
In vector.cr it starts out like this:
module Origin::Vector(T)
  forward_missing_to @data

  include Origin::Shared(Float64) # Error: undefined constant Origin::Shared

  ...
end
The include compiles if I put it in a macro included though
These are the errors that drive me crazy because I don't see where they are coming from.
I only have 3 files, and this is the last file parsed
shared.cr should have already been loaded and the module defined...
George Dietrich
@Blacksmoke16
Do you have this all pushed up atm?
mfiano
@mjfiano:matrix.org
[m]
No but I could
Give me a minute
mfiano
@mjfiano:matrix.org
[m]
Hey Mr. Grant, my stalker :)
George Dietrich
@Blacksmoke16
what were you running to get that?
mfiano
@mjfiano:matrix.org
[m]
I didn't think to run that, because the semantic analyzer in nim showed the aforementioned error in my buffer upon saving
s/vim/vim/
err nim -> vim. must be almost that time :/
The test code I have under those 3 requires is:
alias V2 = Origin::Vector2
x = V2.new(2.0, 8.123)
pp! x + x
pp! x == V2.new(2.0, 8.123_001)
pp! V2.rand(V2::ZERO, V2::ONES)
pp! V2.rand
pp! V2::ZERO.zero?
pp! x.clamp
pp! x.same_direction?(x)
pp! V2::LEFT
George Dietrich
@Blacksmoke16
thz
worked fine for me?