Skip to content

Instantly share code, notes, and snippets.

View emdeeeks's full-sized avatar

Gareth Griffiths emdeeeks

View GitHub Profile
@sakkas-zendesk
sakkas-zendesk / README.md
Last active June 28, 2023 20:24
Manage your symlinks in your dotfiles or anywhere [Ruby]

How to

You might need to modify default path for your symlink sources and destinations as per your preferences.

# Where we keep the original files which we track in Git
SRC_BASE = HOME + "/.dotfiles/symlinker/files/"
# Where we place them by default, if there is no override
DST_BASE = HOME + "/"
@muhammadyana
muhammadyana / rails-softdeleteable.rb
Created May 9, 2020 07:25
Ruby on Rails Soft Deleteable
module SoftDeletable
extend ActiveSupport::Concern
included do
scope :deleted, ->{ where.not(deleted_at: nil) }
scope :without_deleted, ->{ where(deleted_at: nil) }
scope :with_deleted, ->{ unscope(where: :deleted_at) }
default_scope { without_deleted }
end
@dhh
dhh / tracker_blocking.rb
Last active June 30, 2024 14:35
Current list of spy pixels named'n'shamed in HEY, as of April 23, 2020
module Entry::TrackerBlocking
extend ActiveSupport::Concern
included do
has_many :blocked_trackers
end
email_service_blockers = {
"ActiveCampaign" => /lt\.php(.*)?l\=open/,
"AWeber" => "openrate.aweber.com",
@amirrajan
amirrajan / main.rb
Created February 29, 2020 21:56
Ruby function to convert hex to RGB without using regex.
class String
def color
if self.length != 6 && self.length != 8
raise "Color must be in the format rrggbb or rrggbbaa. This is what you provided #{self}."
end
if self.length == 6
working_number = 0xff000000 + self.to_i(16)
else
working_number = [*self[-2..-1], *self[0..5]].join.to_i(16)
end
@amirrajan
amirrajan / main.rb
Created January 6, 2020 00:52
DragonRuby Mode 7
def defaults args
args.outputs.static_background_color = [0, 0, 0]
args.grid.origin_center!
args.state.texture_size = 64
args.state.texture_path = 'sprites/square-orange.png'
return if args.state.squares
cols = args.grid.w.idiv(args.state.texture_size) + 2
rows = args.grid.h.half.idiv(args.state.texture_size) * 2
args.state.squares = cols.numbers.product(rows.numbers).map do |x, y|
{
@amirrajan
amirrajan / main.java
Last active June 4, 2025 22:45
ECS comparison between Java and DragonRuby
// main.java
package my.game;
import com.artemis.*;
import my.game.components.Hello;
import my.game.systems.HelloWorldSystem;
public class GameLauncher {
public static void main( String[] args ) {
WorldConfiguration setup = new WorldConfigurationBuilder()
.with(new HelloWorldSystem())
@monochromer
monochromer / ComponentHelper.rb
Last active April 24, 2023 16:31
Ruby on Rails view component helpers
# https://www.innoq.com/en/blog/rails-frontend-components/
# app/helpers
module ComponentHelper
def component(name, data: {}, &block)
render_component("#{name}/#{name}", { data: data }, &block)
end
private
def render_component(name, locals, &block)
@furaji
furaji / application_form.rb
Last active June 29, 2023 07:50
Rails Base Object
class ApplicationForm
include ActiveModel::Model
include ActiveModel::Attributes
def self.copy_validations_from(model)
attribute_types.keys.each do |key|
model.validators_on(key).each do |validator|
validates(key, validator.kind => validator.options)
end
end
@krtschmr
krtschmr / gist:9e7b297763901efbe6cf02b4cb13ae5f
Last active August 29, 2024 16:43
qrcode with css helper
module QrCodeHelper
def qr_code(string, options={})
base_size = options.fetch(:width, 200)
@qr_logo = options.fetch(:logo, "qr_code_logo.png")
@qr_logo_size = options.fetch(:logo_size, 48)
level = options.fetch(:level, :l)
@qr_data = RQRCode::QRCode.new(string, level: level).to_s.split("\n").collect(&:chars)
@qr_size = @qr_data.size
@amirrajan
amirrajan / main.rb
Last active March 25, 2025 16:57
DragonRuby Game Toolkit Sprite Sheet Example
def tick args
args.labels << [640, 689, "Asset Presenter", 0, 1]
args.sprites << tile(0, 0, 100, 100)
args.sprites << tile(1, 0, 200, 200)
args.sprites << tile(2, 0, 300, 300)
10.map_with_index do |x|
10.map_with_index do |y|
args.sprites << tile(x, y, 30 + x * 64, 30 + y * 64)
end