Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marekhrabe/d5bdac33a91c0e05e0ba to your computer and use it in GitHub Desktop.
Save marekhrabe/d5bdac33a91c0e05e0ba to your computer and use it in GitHub Desktop.
// Copy Layer List to Clipboard
// Change this variables to configure the script:
var COPY_LAYER_TYPE = true,
TRAVERSE_GROUPS = true,
INDENT_GROUPS = true
var strRepeat = function(str, qty) {
if (qty < 1) return '';
var result = '';
while (qty > 0) {
if (qty & 1) result += str;
qty >>= 1, str += str;
}
return result;
};
var layers = [[doc currentPage] layers],
layers_array = [layers array],
layer_tree = ""
function copy_text(txt){
var pasteBoard = [NSPasteboard generalPasteboard]
[pasteBoard declareTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:nil]
[pasteBoard setString:txt forType:NSPasteboardTypeString]
}
function is_group(layer) {
return [layer isMemberOfClass:[MSLayerGroup class]] || [layer isMemberOfClass:[MSArtboardGroup class]]
}
function process_layer(layer, depth){
log("processing layer " + layer + " at depth " + (depth || 0))
if (depth && INDENT_GROUPS) {
layer_tree += strRepeat('\t', depth)
}
if (COPY_LAYER_TYPE) {
layer_tree += [layer class] + ": "
}
layer_tree += [layer name]
layer_tree += "\n"
if(is_group(layer) && TRAVERSE_GROUPS){
// we have a group, so go inside it:
var sublayers = [[layer layers] array]
for (var j = 0; j < [sublayers count]; j++) {
process_layer(sublayers[j], depth + 1)
}
}
}
for (var i = 0; i < [layers_array count]; i++) {
layer = layers_array[i];
process_layer(layer, 0)
}
copy_text(layer_tree)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment