Skip to content

Instantly share code, notes, and snippets.

View timhobbs's full-sized avatar

Tim Hobbs timhobbs

View GitHub Profile
@timhobbs
timhobbs / em.js
Created November 15, 2012 06:02
jQuery "remote" validation
window.Em = window.Em || {};
Em = {
setFocusOutValidation: function (form) {
var s = $.data(form, "validator").settings;
s.onfocusout = function (element) {
if ($(element).val().length > 0) {
$(element).valid();
}
};
@timhobbs
timhobbs / FilterExtension.cs
Created November 16, 2012 01:13
An extension method for Telerik MVC grid filtering
///<remarks>
/// Turns out this wasn't needed - and far less elegant than the existing extension method.
/// However, it is still an example of a generic way to match a given property with a value
/// and how to select that property by name (string) and compare its value to the value
/// that is passed in. It works...
///</remarks>
public static IList<T> ApplyFilter<T>(this IList<T> list, FilterDescriptor filter) {
// We wont allow filtering on anything but string type properties
if (filter.MemberType != typeof(string)) throw new ArgumentException("Filtering is only allowed for properties with a type of 'string'.");
@timhobbs
timhobbs / toggle-data.js
Created November 21, 2012 19:20
Select data- attribute on an input
var d = $("input[data-toggle-class]");
$.each(d, function (idx, data) {
console.log(idx, data);
});
@timhobbs
timhobbs / Trolliminator! Bookmarklet.js
Last active December 15, 2015 02:49
Trolliminator! eliminates troll posts from Gigya comments. Simply add a comma-separated list of troll usernames to the trolls variable at the top, then save this js snippet as a bookmark. Whenever you want to trolliminate posts, just click the bookmark! All troll posts will be marked with a "Trolliminated!" string and a total count will be displ…
javascript: (function () {
var trolls = [
'troll', // <-- add troll names here
];
var el = document.createElement('div'),
b = document.getElementsByTagName('body')[0];
otherlib = false, msg = '';
el.style.position = 'fixed';
el.style.height = '32px';
/// <summary>
/// Reads database schema from query, generates assembly in the memory, and returns dynamic object
/// </summary>
public static System.Collections.IEnumerable DynamicSqlQuery(this Database database, string sql, params object[] parameters)
{
TypeBuilder builder = DynamicMapper.createTypeBuilder(
"MyDynamicAssembly", "MyDynamicModule", "MyDynamicType");
using (System.Data.IDbCommand command = database.Connection.CreateCommand())
{
@timhobbs
timhobbs / ConvertCsvToList.cs
Created May 24, 2013 19:44
Converts CSV file contents (as IList<string>) to a typed IList<T>
private IList<T> ConvertCsvToList<T>(IList<string> csv, string[] header) {
var list = new List<T>();
foreach (var row in csv) {
var columns = row.Split(',');
T obj = (T)Activator.CreateInstance(typeof(T));
for (int i = 0; i < columns.Length; i++) {
var h = Regex.Match(header[i].Replace("@", "_"), @"(?<="")(?:\\.|[^""\\])*(?="")").Value;
var c = Regex.Match(columns[i], @"(?<="")(?:\\.|[^""\\])*(?="")").Value;
var prop = typeof(Em.Schools.Data.Domain.Match).GetProperty(h);
namespace MySweetApp
{
using System;
using System.Linq.Expressions;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
public static class FormHelpers
cinst fiddler4
cinst console-devel
cinst sublimetext2
cinst googlechrome
cinst windirstat
cinst sysinternals
cinst 7zip
cinst winmerge
cinst firefox
cinst nodejs
@timhobbs
timhobbs / gist:bb8a304a8d008d74fd29
Last active November 30, 2018 02:37
C# style String.Format for JS
/* Examples:
* var test = "test {0} {1}, {2} - {0} {1} {2}".format('a', 'b', 'c');
* var test2 = "the {0} ate the {1}".format("cat", "canary");
*/
String.prototype.format = function () {
var self = this;
var re = /\{\d+\}/g;
var m = self.match(re);
var indexes = [];
@timhobbs
timhobbs / git-tag-delete-local-and-remote.sh
Created March 13, 2019 17:35 — forked from mobilemind/git-tag-delete-local-and-remote.sh
how to delete a git tag locally and remote
# delete local tag '12345'
git tag -d 12345
# delete remote tag '12345' (eg, GitHub version too)
git push origin :refs/tags/12345
# alternative approach
git push --delete origin tagName
git tag -d tagName