Skip to content

Instantly share code, notes, and snippets.

View matthewstokeley's full-sized avatar
🎯
Focusing

Matthew Stokeley matthewstokeley

🎯
Focusing
View GitHub Profile
@matthewstokeley
matthewstokeley / gist:10422786
Last active February 7, 2020 13:35
php loop array and assign function name with value
<?php
// iterates through an array and calls the appropriate function
foreach ($key_array as $key_name) {
if(array_key_exists($key_name, $settings)) {
$function = 'set' . ucwords($key_name);
$this->$function($settings[$key_name]);
}
}
@matthewstokeley
matthewstokeley / gist:356b3816a4ee46695ed8
Created July 18, 2014 20:52
parse google calendar xml feed incomplete
/** Parsing google calendar xml feed **/
class GoogleCal {
protected $feed_url;
protected $data;
npm install grunt --save-dev && npm install time-grunt --save && npm install load-grunt-config --save-dev && npm install grunt-concurrent --save-dev && npm install grunt-contrib-clean --save-dev && npm install grunt-contrib-imagemin --save-dev && npm install grunt-contrib-uglify --save-dev && npm install grunt-contrib-csslint --save-dev && npm install grunt-contrib-jshint --save-dev
@matthewstokeley
matthewstokeley / gist:c06a36c68c718250ebfc
Last active August 21, 2019 07:49
callback methods for grunt.task.run
// module pattern in case i add a callback / task queue list
var task = function (tasks) {
return {
run: function() {
// run task
grunt.task.run(tasks);
},
on: function(val, callback) {
// run task
this.run();
@matthewstokeley
matthewstokeley / gist:13d4bcc3c12b8edc1856
Created April 29, 2015 20:01
full width responsive images
.full-width-image {
/* height 0 padding-bottom hack */
height: 0;
/* contain stretches to largest */
background-size: contain;
background-repeat: no-repeat;
}
.bg {
/* percentage relative to image ratio */
@matthewstokeley
matthewstokeley / gist:2ea7f266a2313702579a
Created May 30, 2015 20:49
compare strings regardless of case
// as a function
var isLike = function(set) {
if ((set[0].localeCompare(set[1], 'en', {sensitivity: 'base'})) !== 0) {
return false;
}
return true;
};
var is = isLike(['a', 'A']);
@matthewstokeley
matthewstokeley / gist:36b088f008e9c3ab4c36
Last active February 13, 2020 18:47
execute a function by string name in a namespace without eval
// 'pojo' idiom for namespacing javascript
var namespace = {};
var x = 'fn';
namespace.fn = function() {
console.log('fin');
}
// execute function by string name
@matthewstokeley
matthewstokeley / gist:42abc92a1863c0d4bbfc
Created November 2, 2015 21:05
velocityjs scroll animations
$('a[href="javascript:;"]').bind('click', function(e) {
var target;
e.preventDefault();
e.stopPropagation();
target = $(this).data('section');
$('#' + target).velocity('scroll', {
duration: 500,
offset: -40,
easing: 'ease-out'
});
// This gist creates maintainable, DRY, responsive header classes and selectors that allow for unqualified property attribution, semantic markup without class-stacking, and minimal compiled css by using a loop to create heading selectors and placeholders from a simple data structure.
// To implement, adjust the sizes in the map. Heading selectors will be compiled. Placeholders that reference the heading size can be extended in any element.
// There are issues using placeholders inside media-queries. These are being addressed.
// See the references at the top of the gist for more information.
// http://blog.millermedeiros.com/the-problem-with-css-pre-processors/
// http://thesassway.com/intermediate/understanding-placeholder-selectors
// http://www.sitepoint.com/using-sass-maps/
// http://webdesign.tutsplus.com/tutorials/all-you-ever-need-to-know-about-sass-interpolation--cms-21375
<!-- references: -->
<!-- accessibility -->
<!-- semantics -->
<!-- idiomatic markup -->
<!-- modular components -->
<!-- css class selector performance -->
<!-- js id selector performance -->
<!-- object-oriented-like css classes -->
<!-- good example -->