Skip to content

Instantly share code, notes, and snippets.

View kamranayub's full-sized avatar

Kamran Ayub kamranayub

View GitHub Profile
@kamranayub
kamranayub / deploy.sh
Created February 26, 2015 16:29
Deploy site from Travis
#!/bin/bash
echo "Running deployment script..."
CURRENT_COMMIT=`git rev-parse HEAD`
# Change the branch used if applicable (e.g. gh-pages)
echo "Cloning master branch..."
# Hide output since we use an access token here
git clone -b master "https://${GH_TOKEN}@${GH_REF}" _deploy > /dev/null 2>&1 || exit 1
@kamranayub
kamranayub / trigger-build.js
Created March 29, 2015 22:59
Manually trigger Travis CI build for repository
var Travis = require('travis-ci');
// change this
var repo = "kamranayub/kamranayub.github.io";
var travis = new Travis({
version: '2.0.0'
});
travis.authenticate({
@kamranayub
kamranayub / PrettyJson.cs
Last active September 25, 2015 02:17
Formats a valid JSON string into a pretty output
/// <summary>
/// Formats a JSON string by walking through it and examining the contents.
/// </summary>
/// <param name="json">Unformatted JSON string, expects valid JSON with quoted keys and no whitespace.</param>
/// <returns>Formatted JSON string</returns>
/// <remarks>
/// [ { should have line breaks and tabs after them
/// ] } should have line breaks and tabs before them
/// : should have a space after it
/// , should have a line break and tab
@kamranayub
kamranayub / gist:853906
Created March 4, 2011 00:26
Generates a URL-friendly "slug" from an unsanitized string
/// <summary>
/// Will transform "some $ugly ###url wit[]h spaces" into "some-ugly-url-with-spaces"
/// </summary>
public static string Slugify(this string phrase, int maxLength = 50)
{
string str = phrase.ToLower();
// invalid chars, make into spaces
str = Regex.Replace(str, @"[^a-z0-9\s-]", "");
// convert multiple spaces/hyphens into one space
@kamranayub
kamranayub / FieldLabelFor.cs
Created April 7, 2011 13:33
MVC FieldLabelFor helper. Helps generate a better label based entirely off a model's metadata properties.
/* add using statements */
public static class HtmlExtensions {
/// <summary>
/// Generates a better label.
/// Text based off given labelText, [DisplayName], or property name.
/// If the field is optional ([Required]), adds an (optional) em tag.
/// If the field has a description ([Description]), adds a class="note" span tag.
/// </summary>
/// <typeparam name="TModel"></typeparam>
@kamranayub
kamranayub / iebuttonfix.js
Created May 19, 2011 18:07
IE 7 and below <button> tag value on POST fix
$(function () {
//
// IE 7 and below <button> fix
// See: http://www.peterbe.com/plog/button-tag-in-IE
//
if ($.browser.msie) {
if ($.browser.version === "7.0" ||
$.browser.version === "6.0") {
$("button[name][value]").live('click', function () {
var $this = $(this),
@kamranayub
kamranayub / EnumDropDown.cs
Created October 14, 2011 16:04
Drop-down for Enum MVC helper
public static MvcHtmlString DropdownForEnum<TModel>(this HtmlHelper<TModel> helper, Type type,
string name, string optionLabel, object htmlAttributes)
{
if (!type.IsEnum) throw new ArgumentException("type must be that of an enum", "type");
var dictionary = new Dictionary<string, string>();
var values = type.GetEnumValues();
foreach (var val in values)
@kamranayub
kamranayub / PerfTestCaseBackingMethods.cs
Created October 20, 2011 20:20
Performance of reading AppSetting via different backing methods
using System;
using System.Diagnostics;
namespace PerfBackingFields
{
class Program
{
private const int Iterations = 100000;
static void Main(string[] args)
@kamranayub
kamranayub / ExcludeDirectorySearch.cs
Created January 9, 2012 16:42
Cassette ExcludeDirectorySearch
/// <summary>
/// An exclude directory search for Cassette. Provide the patterns you want to search for
/// and this will exclude *.min/*-vsdoc files as well as the directories you specify.
/// </summary>
public class ExcludeDirectorySearch : FileSearch
{
/// <summary>
/// Excludes specified directories in search (also .min and -vsdoc files)
/// </summary>
/// <param name="pattern">File search pattern (wildcards, e.g. *.css;*.less)</param>
@kamranayub
kamranayub / knockout.compiledTemplateSource.js
Created March 21, 2012 19:47
Pre-compiled jQuery tmpl support for KO 2.0.0
// jQuery.tmpl Compiled Source Plugin for Knockout 2.0
// Kamran Ayub - http://kamranicus.com
//
// Adds support for referencing named pre-compiled templates
// e.g. $.template('name', 'markup')
//
// Specifically, this makes Cassette Knockout compiled templates
// work in KO 2.0.0
(function (ko) {
ko.templateSources.compiledTemplateSource = function (name) {