Skip to content

Instantly share code, notes, and snippets.

View ksss's full-sized avatar
🏠
Working from home

Yuki Kurihara ksss

🏠
Working from home
View GitHub Profile
#! /usr/bin/env ruby
# $ rbs-fuzzing.rb [TypeName] [method_name]
# $ rbs-fuzzing.rb Integer
# $ rbs-fuzzing.rb Integer pow
require 'rbs'
require 'rbs/test'
class Fuzzing
@ksss
ksss / Usage.md
Last active August 4, 2023 07:06

Example

$ cat a.rbs
class Foo
  def bar: () -> void
  def self.baz: () -> (Integer | String)
  def qux: (untyped) -> untyped
end
@ksss
ksss / rbsg.md
Last active September 11, 2022 07:10

[PoC] Proposal of RBS generation method using Rack architecture

RBS generation problem

RBS is an easy language to generate code for because of its simple syntax and lack of dependencies between files. In addition, there are currently a large number of required type definitions, so code generation for RBS is considered to be highly important.

Various attempts have been made to generate RBS code, including generation from JSON files and analysis of static and dynamic Ruby code. However, each method has its advantages and disadvantages, and not all problems have been solved.

@ksss
ksss / rbs.rake
Last active March 30, 2022 06:19
begin
require "rbs_rails/rake_task"
require "rbs"
rescue LoadError
return
end
RbsRails::RakeTask.new
class AppGeneratedWriter < RBS::Writer
@ksss
ksss / assert.rb
Last active February 1, 2021 01:37
Pattern match samples
# inspired by https://qiita.com/kentaro/items/477c92a57c8aaf694251
user = {
id: 123_456,
name: "ksss",
profile: {
real_name: "栗原勇樹",
image: {
original: "...",
thumbnail: "...",
@ksss
ksss / spec_helper.rb
Created December 14, 2020 06:57
Minimum coverage on ruby gems
if ENV['COVERAGE']
require "coverage"
Coverage.start
at_exit do
# "great_library" is example gem name
cov = Coverage.result.select { |d| d.match?(%r{/great_library/lib/}) }
cov.transform_keys! { |key| key.dup.sub!(%r{^.*great_library/(lib/.*)$}, '\1') }
cov.transform_values! do |ary|
ary = ary.compact
ary.count { |l| l > 0 }.fdiv(ary.length)
@ksss
ksss / init.sql
Last active September 24, 2020 15:10
create pokemon database
/* cat init.sql | sqlite3 pokemon */
drop table if exists status_list;
create table status_list(
jpname VARCHAR(255) primary key,
jpromaji VARCHAR(255) not null,
no integer not null,
h integer not null,
a integer not null,
b integer not null,
c integer not null,
@ksss
ksss / jr
Last active August 2, 2019 09:03
json to ruby hash command
#! /usr/bin/env ruby
require 'json'
require 'pp'
require 'optparse'
Option = Struct.new(
:symbolize
)
o = Option.new(
@ksss
ksss / log.rb
Last active June 5, 2018 13:58
The logger that does not execute expressions inside depending on conditions
#! /usr/bin/env ruby
require 'logger'
case ARGV[0]
when "stdout"
log = Logger.new(STDOUT)
else
log = nil
end